알고리즘 문제 풀이 / 프로그래머스 (programmers) - 예상 대진표
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12985#
문제 풀이
다음라운드 자신의 대진번호는 (현재라운드 + 1) / 2 이다.
처음 풀어보았을 땐, b를 무조건 큰 수로 만든 후 b-a 의 차이로 구했다.이렇게 할 경우 테스트 케이스 7번, 33번 에서 실패였다. 바로 a = 4, b = 5일 경우에서의 오류였다.4, 5는 차이가 1이고, a가 짝수이기 때문에 내 코드로 풀게되면 정답은 2가 나온다. 하지만 정답은 3이다.그래서 다시 생각해보니 애초에 b-a 를 생각하지않고 b와 a의 값이 같으면 둘이 경기하는 것이기 때문에 모든 조건을 지우면 해결됐다.
이번 점수는 11점 이었다.
첫 번째 풀이( 7, 33 실패)
public int solution(int n, int a, int b) {
int answer = 1;
if(a > b) {
int temp = a;
a = b;
b = temp;
}
while(b - a != 1) {
a = ++a / 2;
b = ++b / 2;
answer++;
}
answer = a % 2 == 1 ? answer : answer + 1;
return answer;
}
}
두 번째 풀이(정답)
public static int solution(int n, int a, int b) {
int answer = 0;
while(b != a) {
a = ++a / 2;
b = ++b / 2;
answer++;
}
return answer;
}
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스(programmers)] (2021 Dev-Matching) 행렬 테두리 회전하기 (0) | 2021.06.03 |
---|---|
[프로그래머스(programmers)] (월간 코드 챌린지 시즌2) 괄호 회전하기 (0) | 2021.06.02 |
[프로그래머스(programmers)] (2017 팁스타운) 짝지어 제거하기 (0) | 2021.05.29 |
[Programmers/Summer,Winter Coding(2019)] 멀쩡한 사각형 - Java (0) | 2021.05.28 |
[프로그래머스(programmers)] (2019 KAKAO BLIND RECRUITMENT) 오픈채팅방 (0) | 2021.05.27 |
댓글