접근 과정
- 해당 번호(num)에 따라 다음 라운드 부여 번호는 (num + 1) / 2가 된다.
- 라운드가 같아질 때까지 계속 반복하면 된다.
시행착오
해결 코드
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while(a != b){
a = (a + 1) / 2;
b = (b + 1) / 2;
answer++;
}
return answer;
}
}
시간복잡도
접근 과정
- 10일 연속으로 봤을 때 원하는 물품과 할인이 같아야 하므로 할인 품목 배열을 0부터 할인 품목 길이의 -10보다 작거나 같을 때까지 반복
- 반복할 때 해시맵을 활용하여 할인 품목과 개수를 넣는다.
- 원하는 품목의 개수와 맵의 할인 품목의 개수과 맞으면 answer을 1늘림
- 반복이 끝나면 answer을 반환하여 해결
시행착오
해결 코드
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0, l = 0;
for(int num : number) l += num;
Map<String, Integer> m = new HashMap<>();
for(int i = 0; i <= discount.length - l; i++){
m.clear();
for(int j = i; j < i + l; j++){
m.put(discount[j], m.getOrDefault(discount[j], 0) + 1);
}
boolean possible = true;
for(int j = 0; j < want.length; j++){
String w = want[j];
int num = number[j];
if(m.getOrDefault(w, 0) != num){
possible = false;
break;
}
}
if(possible) answer++;
}
return answer;
}
}
시간복잡도