728x90
https://www.youtube.com/watch?v=2zjoKjt97vQ&t=20s
문제 1
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
//내가 한 방법..
int result = 0;
while(N>1){
if(N%K>0){
N--;
result++;
}else{
N=N/K;
result++;
}
}
System.out.println(result);
//알고리즘
while(true){
int target = (N/K) * K; // N이 K로 나누어 떨어지는 가장 가까운 수 구하기.
result += (N-target); //가장 가까운 수 될때까지 1씩 뺀 횟수
N=target;// 앞으로 1로 만들어야할 남은 수
if(N < K) break;
N /= K; //K로 나눔(위에서 나누어지는 수로 바꿈)
result += 1;//한번 연산했으니 +1 해줌
}
result += (N-1); // N이 1보다 클때 남은수에서 1이 될때까지 빼야하는 횟수 더하기
System.out.println(result);
}
}
0731 복습
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
int result = 0;
while(N >= K){
int target = (N/K) * K;
result += (N - target);
N=target;
N /= K;
result+=1;
}
result += (N-1);
System.out.println(result);
}
}
왜 break로 while문을 빠져나올때 저 저 중간에서 빠져나오는지 모르겠다.
애초에 밑에단계에서 N이 K보다 작아졌을때 빠져나오면 될 거 같은데..
위쪽에서 계산했을때 N이 K보다 큰 상황이지만 계산후 N이 K보다 작아지는경우가 있어서 그러는걸까.?(그럴수가 있나..?)
모르것다 ..
아부지 정답을알려줘
728x90
'with my rubber duck > codingTest' 카테고리의 다른 글
그리디 알고리즘 공부하기 (feat.동빈나 이코테 강의) (0) | 2022.07.29 |
---|---|
[백준 10162]전자레인지 와 혼자 풀었따 (0) | 2022.07.28 |
[백준 11047] 동전 풀기 껌이지~ (0) | 2022.07.25 |
DFS 알고리즘 공부하기 (0) | 2022.07.24 |
[백준 1152] 단어의 개수 쉬운문제 풀라다가 더 빡침 (0) | 2022.07.22 |
댓글