백준 14652번 풀이 (나머지와 몫)

백준 14652번

①처음 내가 풀었던 답

N, M, K = map(int, input().split())

if 0 <= K <= M-1:
    print("{0} {1}".format(0, K))
else:
    for i in range(1, N+1):
    	if (i*M-1 < K <= (i+1)*M-1) == True:
        break
print("{0} {1}".format(i, K-4*(i)))

이렇게 긴 문제를 처음 풀어봐서 당연히 엄청 어려울거라고 생각하고
너무 어렵게 생각했던 것 같다.

N번째 칸을 기준으로 좌표를 나타냈었는데 K가 몇 번째 행에 있는지에 따라
(n, m)좌표의 n, m이 다 다르게 나오니까

몇 번째 행에 있는지만 알면 (n,m)을 구할 수 있어서 for문을 이용해서
K가 몇 번째 행인지 구하고

몇 번째 행인지 정보를 i가 가지고 있으므로 i를 기준으로 n과 m의 값을 구했다.

(진짜 푸는데 1~2시간 걸린 것 같은데 풀고나서 정말 뿌듯해서 백준에 입력했는데 오답나왔을 때 그 기분이란...)

② 정답

N, M, K = map(int, input().split())
print("{0} {1}".format(K//M, K%M))

정답을 봤을 때 그 현타란... 이루 말할 수 없다,,
2*9 = 18을 미분, 적분, 함수 이런거 다 써서 푼 기분이랄까...
알고리즘을 거의 처음 접했는데 아마 경험의 차이일 것 같다.
다음부터는 이런 문제 나오면 나머지랑 몫도 항상 생각해봐야겠다.

좋은 웹페이지 즐겨찾기