Swift랑 친해지기/programmers 풀기
[프로그래머스] 예상 대진표 (Swift)
데브킹덕
2022. 10. 31. 16:33
https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
변수
- people - 경기를 할때마다 총 인원
- a2 - a가 경기를 올라갈때마다 몇번째에 경기를 하는지 나타내는 변수
- b2 - b가 경기를 올라갈때마다 몇번째에 경기를 하는지 나타내는 변수
- count - 무조건 1번은 시합을 해야 만나든 말든 할 것 아님 그래서 초기값 1
나만의 풀이 방법
1. 사람이 2명남은 결승전까지 while문을 통해 반복함
2. a2나 b2가 짝수일 경우는 2로 나눈 몫을 통해 몇번째에 시합하는지 알 수 있음
홀수일 경우 2로 나눈 몫에 1을 더해주어 확인 할 수 있음
3. a2와 b2가 같을 경우는 시합을 하는 경우임 이때 count 를 반환
아닐경우 count를 증가시키고 people을 반으로 줄여줌
import Foundation
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int
{
var people = n
var a2 = a
var b2 = b
var count = 1
while people >= 2{
if a2 % 2 == 0{
a2 /= 2
}else{
a2 = a2 / 2 + 1
}
if b2 % 2 == 0{
b2 /= 2
}else{
b2 = b2 / 2 + 1
}
if a2 == b2{
return count
}
count += 1
people /= 2
}
return 0
}