반응형

-풀이

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를 해주는 것이었다..! 해결완료

 

+ Recent posts