Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
[프로그래머스][Java][Lv.0] 1로 만들기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181880
내가 푼 풀이
1. int배열을 순회하면서 홀수 짝수일 경우 계산해서 count를 증가 시켰다.
2. 첫번째 인덱스값이 1이 되기 전까지 계속 계산한다
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for (int i = 0; i < num_list.length; i++) {
int tmp = num_list[i];
while (tmp > 1) {
if (tmp % 2 == 0) {
tmp = tmp / 2;
answer++;
} else {
tmp = (tmp - 1) / 2;
answer++;
}
}
}
return answer;
}
}
테스트 1 〉 | 통과 (0.02ms, 74.8MB) |
테스트 2 〉 | 통과 (0.02ms, 82.8MB) |
테스트 3 〉 | 통과 (0.04ms, 63.6MB) |
테스트 4 〉 | 통과 (0.02ms, 70.2MB) |
테스트 5 〉 | 통과 (0.04ms, 66.4MB) |
테스트 6 〉 | 통과 (0.02ms, 72.7MB) |
테스트 7 〉 | 통과 (0.03ms, 77.2MB) |
테스트 8 〉 | 통과 (0.02ms, 80MB) |
테스트 9 〉 | 통과 (0.03ms, 83MB) |
테스트 10 〉 | 통과 (0.02ms, 74.9MB) |
테스트 11 〉 | 통과 (0.02ms, 83.2MB) |
테스트 12 〉 | 통과 (0.03ms, 75.8MB) |
테스트 13 〉 | 통과 (0.02ms, 75.5MB) |
테스트 14 〉 | 통과 (0.03ms, 65.5MB) |
테스트 15 〉 | 통과 (0.02ms, 83.1MB) |
테스트 16 〉 | 통과 (0.03ms, 64.5MB) |
테스트 17 〉 | 통과 (0.02ms, 76.4MB) |
테스트 18 〉 | 통과 (0.05ms, 84.2MB) |
테스트 19 〉 | 통과 (0.02ms, 73.4MB) |
다른 사람 풀이 1
1. 변수로 담을 필요없이 while문에 바로 1이 아닐경우까지 반복하도록 세팅한다.
2. int타입이라서 -1을 해줄 필요가 없다, 어차피 나누기의 몫이 변수에 저장되기 때문이다.
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for(int i = 0;num_list.length>i;i++){
while(num_list[i]!=1){
num_list[i]/=2;
answer++;
}
}
return answer;
}
}
테스트 1 〉 | 통과 (0.02ms, 70.5MB) |
테스트 2 〉 | 통과 (0.03ms, 85.7MB) |
테스트 3 〉 | 통과 (0.02ms, 72.7MB) |
테스트 4 〉 | 통과 (0.03ms, 76.1MB) |
테스트 5 〉 | 통과 (0.02ms, 75.9MB) |
테스트 6 〉 | 통과 (0.02ms, 75.1MB) |
테스트 7 〉 | 통과 (0.02ms, 70.1MB) |
테스트 8 〉 | 통과 (0.03ms, 76.6MB) |
테스트 9 〉 | 통과 (0.02ms, 84.7MB) |
테스트 10 〉 | 통과 (0.02ms, 74.3MB) |
테스트 11 〉 | 통과 (0.03ms, 73.6MB) |
테스트 12 〉 | 통과 (0.03ms, 78.1MB) |
테스트 13 〉 | 통과 (0.02ms, 66.2MB) |
테스트 14 〉 | 통과 (0.02ms, 74.1MB) |
테스트 15 〉 | 통과 (0.02ms, 66.8MB) |
테스트 16 〉 | 통과 (0.03ms, 72.7MB) |
테스트 17 〉 | 통과 (0.03ms, 82.2MB) |
테스트 18 〉 | 통과 (0.03ms, 72.6MB) |
테스트 19 〉 | 통과 (0.03ms, 77.7MB) |
다른 사람 풀이 2
1. 제곱을 계산하는 함수인 Math.pow()함수를 활용했다.
class Solution {
public int solution(int[] num_list) {
int answer = 0;
int a = 0;
for(int i = 0; i < num_list.length; i++){
int j = 0;
while (num_list[i] >= Math.pow(2, j)) {
a = j;
j++;
}
answer += a;
}
return answer;
}
}
테스트 1 〉 | 통과 (0.04ms, 75.8MB) |
테스트 2 〉 | 통과 (0.06ms, 78.4MB) |
테스트 3 〉 | 통과 (0.04ms, 74.3MB) |
테스트 4 〉 | 통과 (0.04ms, 77.1MB) |
테스트 5 〉 | 통과 (0.05ms, 75.2MB) |
테스트 6 〉 | 통과 (0.04ms, 74.2MB) |
테스트 7 〉 | 통과 (0.04ms, 78MB) |
테스트 8 〉 | 통과 (0.05ms, 74.1MB) |
테스트 9 〉 | 통과 (0.05ms, 74.8MB) |
테스트 10 〉 | 통과 (0.05ms, 65.1MB) |
테스트 11 〉 | 통과 (0.03ms, 70.5MB) |
테스트 12 〉 | 통과 (0.05ms, 76.7MB) |
테스트 13 〉 | 통과 (0.06ms, 71.5MB) |
테스트 14 〉 | 통과 (0.06ms, 73.6MB) |
테스트 15 〉 | 통과 (0.06ms, 74.2MB) |
테스트 16 〉 | 통과 (0.04ms, 71.6MB) |
테스트 17 〉 | 통과 (0.04ms, 75.1MB) |
테스트 18 〉 | 통과 (0.05ms, 66.4MB) |
테스트 19 〉 | 통과 (0.09ms, 67.2MB) |
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Java][Lv.0] 문자열 뒤집기 (0) | 2023.08.30 |
---|---|
[프로그래머스][Java][Lv.0] 숨어있는 숫자의 덧셈(2) (0) | 2023.08.30 |
[프로그래머스][Java][Lv.0] 글자 지우기 (0) | 2023.08.29 |
[프로그래머스][Java][Lv.0] 가까운 수 (0) | 2023.08.25 |
[프로그래머스][Java][Lv.0] k의 개수 (0) | 2023.08.25 |