Develop
[프로그래머스] 1로 만들기 본문
문제
내풀이
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for(int a : num_list){
while(a>1){
a = (a%2==0)?a/2:(a-1)/2;
answer++;
}
}
return answer;
}
}
다른풀이
import java.util.Arrays;
class Solution {
public int solution(int[] num_list) {
return Arrays.stream(num_list).map(i -> Integer.toBinaryString(i).length() - 1).sum();
}
}
느낀점
이외에도 많은 풀이 방법이 있었으나 크게 stream 사용과 for문+while문 사용으로 나누어졌다
다른풀이의 코드는 num_list의 내용물을 1개씩 꺼내서 바이너리 스트링으로 만들고 길이 - 1이 1이 될때까지 나눈 횟수를 구한 것이라고 한다
바이너리 스트링으로 만들고 길이를 이용하는 방법은 신박하지만 아직 나에겐 어렵다..
추가적인 내용으로는 제시된 숫자가 int형이기 때문에 굳이 홀수일때 -1을 해줄 필요가 없다
알아서 없어지기 때문 ㅎ
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 바꿔서 찾기 (0) | 2024.02.11 |
---|---|
[프로그래머스] 첫 번째로 나오는 음수 (0) | 2024.02.11 |
[프로그래머스] 간단한 논리 연산 (0) | 2024.02.04 |
[프로그래머스] rny_string (0) | 2024.02.02 |
[프로그래머스] 수열과 구간 쿼리3 (0) | 2024.01.29 |