반응형
[구름톤챌린지]
문제 # https://level.goorm.io/exam/195690/%ED%86%B5%EC%A6%9D/quiz/1
N만큼의 통증을 0으로 만들기위한 최소한의 치료약 사용 개수를 구하는 문제
내가 작성한 코드
/* 9개의 테스트케이스 통과 못한 코드 */
import java.io.*;
import java.util.*;
class Main {
static final int MN = (int)1e9;
static int N;
static int[] dp;
static int[] items = {1, 7, 14};
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
dp = new int[N+1];
Arrays.fill(dp, MN);
dp[0] = 0;
for(int hp=1; hp<=N; ++hp){
for(int i=0; i<3; ++i){
if(hp-items[i]<0) continue;
dp[hp] = Math.min(dp[hp], dp[hp-items[i]]+1);
}
}
System.out.println(dp[N]);
}
}
/* N의 조건을 다시 확인하고 푼 코드 */
import java.io.*;
import java.util.*;
class Main {
static long N;
static int ans;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
N = Long.parseLong(br.readLine());
ans = (int)(N / 14);
N = N % 14;
ans += N / 7;
N %= 7;
ans += N;
sb.append(ans);
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
풀이 및 배운 점
`10의 9제곱`이라고 하면 무의식적으로 21억을 넘지 않을거라고 생각하는 경향이 있나보다.
그리고 이 문제는 조건을 제대로 이해하지 않고 동전 문제와 비슷하다고 생각하며 풀어서 계속 테스트케이스에서 오답을 볼 수 밖에 없었던 것 같다.
문제의 조건을 제대로 읽자!
반응형
'코딩테스트(Coding Test)' 카테고리의 다른 글
[JAVA] 그래프 구현 방법 2가지 (0) | 2023.09.05 |
---|---|
플로이드 워셜(Floyd Warshall) (0) | 2023.09.04 |
[구름톤챌린지] 7일차 구름 찾기 깃발 (0) | 2023.08.23 |
BOJ2847 게임을 만든 동준이 (0) | 2023.08.21 |
[백준/BOJ] 1003 피보나치 함수 (0) | 2023.08.21 |