-풀이
n = int(input())
#answer => 입력 값을 리스트
answer = []
#answerCount => 이기는 최소 턴의 수를 리스트로 차례대로
answerCount = []
#ans => answerCount마다 순서를 매기기 위해
ans = []
r=0
count=1
for _ in range(n):
j, m = map(int, input().split())
#answer => 입력 값을 리스트로
answer.append([j, m])
r = (j-1) % (1+m)
while r < j-1:
r += 1+m
count += 1
#answerCount => 이기는 최소 턴의 수를 리스트로 차례대로
answerCount.append(count)
count = 1
for i in range(len(answerCount)):
#ans => answerCount마다 순서를 매기기 위해
ans.append([i, answerCount[i]])
#an => 길이가 가장 짧은 게임이 두 개 이상일 경우 가장 먼저 입력된 번호와 그 길이를 출력하기 위해 재정렬
an = sorted(ans , key=lambda x: (x[1],x[0]))
#b => 가장 짧은 an[0][0]의 값은 즉 answer의 인덱스이므로 거기서 길이가 담겨있는 [1]인덱스를 b에 저장
b = answer[an[0][0]][1]
#가장 짧은 게임의 번호와 길이를 출력
print("%d %d" % (an[0][0]+1, b))
-풀이 설명(느낀 점)
[40분 no sol] 예제1은 맞는데 예제2가 왜 출력이 저렇게 나오는지 이해가 가지 않는다.. 구글링해도 없다. 일단 보류
==>2021-10-26 해결
import sys
input = sys.stdin.readline
answer = []
n = int(input())
for i in range(n):
j,m = map(int, input().split())
answer.append([i+1,((j-1)//(1+m)+1)*2])
answer.sort(key = lambda x: (x[1],x[0]))
print(answer[0][0],end=' ')
print(answer[0][1])
출력 두번째에 오는 값의 뜻인 길이는 j-1에서 m+1을 나눈 몫에 1을 더하고 두 명이서 게임을 하니까 곱하기 2를 해주는 것이었다..! 해결완료
'알고리즘' 카테고리의 다른 글
[프로그래머스][level 2] 점프와 순간이동 (0) | 2021.10.28 |
---|---|
[프로그래머스][level 2]n^2 배열 자르기 (0) | 2021.10.27 |
[구현] 백준 1152(단어의 개수) 브론즈2 (0) | 2021.10.25 |
[구현] 백준 1284(집 주소) 브론즈3 (0) | 2021.10.25 |
[구현] 백준 1205(등수 구하기) 실버5 (0) | 2021.10.25 |