작심 365
예상 대진표 - level2 (python,java) 본문
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
이 문제는 n 명의 참가자 중 a와 b가 서로 만나게 되는 라운드를 반환하는 문제이다.
가장 처음 참가 번호를 의미한다.
매 경기가 끝날때마다 전체 수는 절반으로 줄기때문에 내가 어떤 번호로 바뀌는 지가 중요하다.
1,2 에 속해 있던 사람은 1번, 3,4에 속해 있던 사람은 2번, 5,6은 3번 7,8은 4번 으로 바뀐다.
일반화 시켜서 표현하면 x가 홀수이면 x = x/2 + 1 , x가 짝수이면 x = x/2 로 표현할 수 있고
매번 짝수 홀수 판별이 귀찮으면 x = x/2 + x%2 로 표현할 수 있다.
Python
def solution(n,a,b):
answer = 0
while a!=b:
a = a//2 + a%2
b = b//2 + b%2
answer+=1
return answer
Java
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while(a!=b){
a = a/2 + a%2;
b = b/2 + b%2;
answer++;
}
return answer;
}
}
'코테 > 프로그래머스' 카테고리의 다른 글
[SQL] 3월에 태어난 여성 회원 목록 출력하기 (1) | 2024.12.27 |
---|---|
[SQL] 어린 동물 찾기 (2) | 2024.12.02 |
[SQL] 아픈 동물 찾기 (0) | 2024.11.30 |
[SQL] 과일로 만든 아이스크림 고르기 (4) | 2024.11.29 |
타겟 넘버 - level2 (python,java) (1) | 2023.10.22 |
Comments