본문 바로가기
공부/코딩테스트

백준: 14652번 나는 행복합니다~ (Python3)

by 혼밥맨 2022. 7. 29.
반응형

백준: 14652번 나는 행복합니다~ (Python3)

나는 행복합니다~ 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB 7100 4571 4316 65.473%

문제

“나는 행복합니다~ 한화라서 행복합니다~”

행복한 이 노래 가사! 그렇다. 욱제는 한화 이글스의 열렬한 팬이다. 욱제는 여름방학을 맞아 치킨과 맥주를 챙겨 야구장을 방문했다! 하지만 이게 웬걸? 치맥에 정신이 팔린 욱제는 그만 자신의 관중석 위치가 담긴 티켓을 잃어버리고 말았다. 욱제가 유일하게 기억하는 것이라고는 자신의 관중석 번호 K뿐이다.

당신은 한화 이글스의 감독이다. 열혈팬인 욱제의 방문에 깊은 감동을 받은 당신은 욱제가 잃어버린 자리를 찾아주려고 한다. 오늘 경기가 펼쳐지는 잠실구장은 세로 길이가 N, 가로 길이가 M인 N≤M 크기의 관중석을 가지고 있다. 관중석의 왼쪽 위는 (0, 0), 오른쪽 아래는 (N-1, M-1)으로 표시된다. 각 관중석에는 번호가 아래 그림처럼 매겨져있다. (0, 0)에서부터 0번으로 시작하여 오른쪽으로, 끝에 다다르면 그 아래에서 또 오른쪽으로 숫자가 증가해나가는 식이다.

당신은 관중석의 크기와 욱제 자리의 번호를 알고 있다. 욱제가 잃어버린 자리는 어디일까? 자리를 찾아서 욱제에게 알려주도록 하자!

입력

첫째 줄에 관중석의 크기를 나타내는 N, M과 잃어버린 관중석 번호를 나타내는 K가 주어진다. (1 ≤ N, M ≤ 30,000, 0 ≤ K ≤ N×M-1)

출력

욱제의 잃어버린 자리를 찾아서, 잃어버린 자리의 좌표 (n, m)를 하나의 공백을 사이에 두고 숫자만 출력한다.

예제 입력 1

3 4 6

예제 출력 1

1 2

예제 입력 2

6 4 14

예제 출력 2

3 2

시도1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lst = [] 
a, b, c = map(int, input().split())
 
cnt=0
 
for i in range(a):
    lst.append(list())
    
    for j in range(b):
        lst[i].append(cnt)
        if cnt==c:
            print(i, j); break
        cnt+=1
    else:
        continue
    break
cs

결과는 메모리 초과... 문제에 메모리 제한에 대한 이야기는 없었는데 너무하다..

그런데 확실한 것은 반복문 (iterative statement)을 자주 사용하거나 작성하는 버릇이 있다면 비효율적이라는 것이다. 결국 시도1 외에 다른 방법이 생각나지 않아서 창피하지만 구글에 또 검색했다. 

 

시도2 (답안)

1
2
a, b, c = map(int, input().split())
print(c//b); print(c%b)
cs

이렇게 간단한거였는데, 이걸 모르고 있었다니. 코드를 보고도 몇 분 동안 이해를 했다. 어째서 이런 공식으로 문제를 풀 수 있는지. '수학을 잘하면 코드를 잘 한다'는 맞는 말임을 또 느낀다. 그런데 이런 수학은 어디서 배울 수 있을까? 문제 이해력이 좋아야 하는 것 같다. 아닌가, 창의력이 좋아야 하는건가. 문제를 보고도 수학 공식을 떠올리지 못하면 어떡하지

반응형

댓글