1. 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12985
2. 문제 해설
간단한 문제였다. a 와 b를 2로 나눠주면서 나눠준 횟수를 구하면 된다.(짝수이냐 홀수이냐는 구분해줘야한다.)
단, 언제까지 나눠줄 것인지 조건을 설정하는 것이 문제의 핵심이다.
조건 1. a 와 b의 차이가 1이어야 함.
조건 2. a 와 b 중 작은 수가 홀수여야함. 예를 들어 a = 4이고 b =5 이면, 차이가 1이지만 한 라운드를 더 치뤄야한다.
위 조건을 동시에 만족할 때까지 a와 b를 나누어주면 된다.
3. 코드 보기
class Solution { public int solution(int n, int a, int b) { int answer = 1; while (true) { if (Math.abs(a - b) == 1 && Math.min(a, b) % 2 == 1) { break; } if (a % 2 == 0) { a /= 2; } else { a = a / 2 + 1; } if (b % 2 == 0) { b /= 2; } else { b = b / 2 + 1; } answer++; } return answer; } }
'PS > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.3 순위 [Java] (0) | 2022.09.05 |
---|---|
프로그래머스 Lv.2 게임 맵 최단거리 [Java] (0) | 2022.09.02 |
2021 카카오 채용연계형 인턴십 Lv3 표 편집 [Java] (0) | 2021.12.04 |
2021 카카오 채용연계형 인턴십 Lv2 거리두기 확인하기 [Java] (0) | 2021.12.02 |
2021 카카오 채용연계형 인턴십 Lv1 숫자 문자열과 영단어 [Java] (0) | 2021.11.25 |