티스토리 뷰
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/12985
토너먼트 게임에서 총 참가자 수 n명, 라이벌 a, b의 토너먼트 위치번호가 주어진다. 예를들어서 8명이라고 치면 1번과 2번, 3번과 4번.. 7번과 8번이 경기를 치루는 식으로 토너먼트가 진행 됬을 때, a랑 b가 몇 라운드에서 서로 붙는지 return 하는 문제
제한사항
- N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)
- A, B : N 이하인 자연수 (단, A ≠ B 입니다.)
입출력 예
N | A | B | answer |
---|---|---|---|
8 | 4 | 7 | 3 |
접근방법
한번 경기를 치루고 나면 a 선수의 순번은 a/2 + a%2 라는것을 알게 되었다.
그리고 결국 경기를 치룰 때의 각 순번을 2로 나눴을 때의 몫이 같을 때 서로 붙어있을 것이라고 생각을 했다. 하지만 붙어 있을 때의 위치가 1,2 처럼 서로 붙는 경우랑 2,3 처럼 서로 붙지 않는 경우가 있다.
a(몫) | b(몫) | round |
---|---|---|
4(2) | 7(3) | 0 |
2(2) | 4(2) | 1 |
1(0) | 2(1) | 2 |
1(0) | 1(0) | 3 |
2, 3 일 경우 2와 3은 몫이 같지만 2번의 라운드에서 서로 만나야 한다. 그리곤 a와 b가 다르다는 추가조건을 알게 되어 위 문제를 해결하였다.
a | b | round |
---|---|---|
2(1) | 3(1) | 0 |
1(0) | 2(1) | 1 |
1(0) | 1(0) | 2 |
코드
728x90
'개발 블로그 > 알고리즘' 카테고리의 다른 글
[Swift] 프로그래머스 - 프렌즈4블록 (0) | 2020.10.29 |
---|---|
[Swift] 프로그래머스 - [1차] 뉴스 클러스터링 (0) | 2020.10.24 |
[Swift] 프로그래머스 - 영어 끝말잇기 (0) | 2020.10.22 |
[Swift] 프로그래머스 - 소수 만들기 (0) | 2020.10.22 |
[Swift] 프로그래머스 - 짝지어 제거하기 (0) | 2020.10.21 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Github Search
- 백준 1946
- today extension
- 자기PR
- Stack
- ReactorKit
- RxDataSource
- Widget
- 프로그래머스 오픈채팅방
- 프로그래머스 추석트래픽
- RxSwift
- BaseTableViewController
- 위젯
- Level 3
- 알고리즘
- 괄호연산
- presentStyle
- VIPER 패턴
- BaseViewController
- 카카오 블라인드2018
- TransitionStyle
- 백준 신입사원
- 아키택처
- Swift
- 1차 뉴스 클러스터링
- 카카오블라인드2018
- ios
- 프로그래머스 캐시
- UIModalPresentationStyle
- 카카오 블라인드 2018
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함