Hyuk(199)
-
[백준 1912번] 연속합
풀이모든 경우의 수를 돌리면 시간초과가 나게된다.. 이 문제도 DP를 통해서 구현할 수 있다. (현재값 + DP이전값) 과 (현재값) 중 큰값을 DP배열에 저장해주면서 Max값이랑 비교한다. 1dp[i] = Max(num[i], dp[i - 1] + num[i]);cs--> 이렇게 하면 부분집합의 합을 DP에 계속 쌓을 수 있다. 문제를 해석할 때 놓치는 부분이 있을 수 있다. 입력범위는 -1000 ~ 1000 까지라 int형 내에서 입력을 받을 수 있다. 하지만 입력의 갯수가 n(1≤n≤100,000) 이므로 1000이 연속해서 100000개가 들어와서 DP배열에 쌓게 되면 int형을 벗어날 수 있다. 소스코드12345678910111213141516171819202122232425#include us..
2017.05.19 -
[백준 2156번] 포도주 시식
풀이계단 오르기문제랑 비슷한 문제이다. 연속으로 세잔을 마시지 못하는 조건이 들어간것도 똑같다. 모든 경우의 수를 구해서 답을 구할 수 있지만 시간초과가 나므로 DP로 해결할 수 있다. 마실 수 있는 경우의 수를 3가지로 분류할 수 있다.1. 현재 잔을 마셧을 경우2. 이전잔과 현재잔 전전전잔을 마셧을 경우3. 전전잔과 현재잔을 마셧을 경우 이 경우의 수의 최대값을 계속 DP배열에 저장해나가면 해결할 수 있다.1231. dp[i-1]2. wine[i] + wine[i - 1] + dp[i - 3]3. wine[i] + dp[i - 2];cs 소스 코드123456789101112131415161718192021222324252627#include using namespace std; int n, wine[..
2017.05.19 -
[React-Native] Android Release APK 생성
React-Native 에서 Android Signed APK 만드는 방법 1. keytool를 사용하여 key를 생성 --> Windows 환경이라면 C:\Program Files\Java\jdkx.x.x_x\bin 해당 경로에서 명령어를 입력해야한다. 1$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000cs --> MAC 환경이라면 적당한 위치에서 위 명령어를 입력해주면 key파일이 생성된다. 명령어를 통해 유효기간이 10000일 짜리인 my-release-key.keystore 파일이 생성된다. 2. 생성된 my-release-key.keyst..
2017.05.18 -
유클리드 호제법
정의유클리드 호제법(- 互除法, Euclidean algorithm)은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 이는 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며,기원전 300년경에 쓰인 유클리드의 《원론》 제7권, 명제 1부..
2017.05.18 -
[백준 1463번] 1로 만들기
풀이조건부터 살펴보면 1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다. 위 순서대로 풀려고하면 예외케이스가 많이 나타나게 된다. 그래서 반대로 생각해보면 DP로 풀 수 있는것을 찾을 수 있다. 1. X에 곱하기 3을 한다.2. X에 곱하기 2를 한다.3. 1을 더한다. cnt=3을 만들어 놓고 cnt를 늘려가면서 계산을 해주면 된다. DP[3*cnt] = DP[cnt]+1DP[2*cnt] = DP[cnt]+1DP[1+cnt] = DP[cnt]+1 이렇게 넣어주되 중복될 경우에는 더작은 숫자를 넣어주면 된다. 문제에서 주어진 크기가 1000000 보다 작거나 같은 수이므로 cnt*3 또는 cnt*2 또는 cnt+1이 1000000을 넘지 않도..
2017.05.17 -
[백준 1966번] 프린터 큐
풀이순서대로 우선순위가 주어졌을때 가장큰값을 만나면 큰값을 기준으로 왼쪽에 있는 값이 오른쪽끝으로 넘어가게 된다. 1 2 3 4 가 주어졌을 때 4 1 2 34 3 1 24 3 2 1 순으로 정렬하면 되는것을 알 수 있지만 문서의 우선순위가 같은경우를 체크해주기 위해 chk 배열을 만들면 해결할 수 있다. 문제제목이 큐라고 되어 큐를 구현할수도 있겠지만 우선순위에 맞게 위치를 계속 이동해주면서 최종 배열에서 chk값을 확인하여도 풀 수 있다. 순서1. 0번지를 선택하여 가장 큰값을 찾는다.2. 가장큰값의 index부터 n까지 tmp 배열에 저장해둔다.3. 0부터 가장큰값의 index까지 tmp 배열에 저장해둔다.4. 원래 배열에 tmp배열을 대입한다. 위 순서대로 0부터 n까지 루프를 돌면 내림차순으로 ..
2017.05.16