정답 코드:
코드 풀이:
우선 수학을 잘 못하는 내겐 너무 어려운 문제였다.
여러 블로그들을 들어가서 이해해보려 노력하고,
요즘 한창 뜨고 있는 chatGPT의 힘을 빌려서 문제를 이해하려고 몇 시간을 노력했다.
우선 내가 이해한 부분에 대해서 설명을 풀어서 해보려 한다.
이런 문제는 먼저 규칙을 찾는 게 중요한데,
문제를 45도 돌려서 피라미드로 만들어보면
1
2 3
4 5 6
7 8 9 10
이런 배열에 만들어지게 되는데, 이 배열은 1+2+3+4+5 이런식으로 라인마다 숫자가 증가하고,
만약 내가 찾고자 하는 숫자가 5 라면, 5는 1+2+2 이기 때문에 3번째 배열 2번 숫자라는 걸
알 수 있다. 이걸 이해하는데 오래 걸렸다.. 이걸 코드로 풀어보면
while N > line: (입력한 5가 line보다 작거나 같으면 종료)
N -= line ==> 5에서 초기값 1을 뺀다.
line += 1 ==> line을 다음 배열인 2로 증가시킨다.
여기서 N은 4, line은 2 기 때문에 아직 까지 while Ture:가 성립해서
한 번 더 반복문을 통과하고
그 다음은 N = 2, line = 3이 되는데, 피라미드 그림을 보면 3번째 열 2번째 행에
5가 있는 걸 알 수 있다.
근데 문제에선 저렇게 피라미드 형식이지만,
1
3 2
4 5 6
10 9 8 7
이런 식으로 짝수 열마다 역순으로 정리가 되기에 좀 헷갈렸는데.
조건문을 통해 해결하였다.
먼저 문제를 피라미드처럼 순차적으로 정렬 해보면
1/1 2/1 1/2 3/1 2/2 1/3 4/1 3/2 2/3 1/4
이런 식으로 x/y로 이루어져있고 , 규칙적이다
규칙을 찾아보면
x = line - N + 1
y = N 이라는 규칙을 찾을 수 있다.
단, 짝수 열 일 경우엔 x,y만 반대로 돌려주면 되는데,
예를 들어 10은 4번째라인 4번째 숫자여서 위 공식을 대입해서 x,y
를 찾을 경우 x = 1 y = 4 여서 1/4 지만,
문제에선 4/1이기에 반대로만 바꿔주면 된다는 걸 알 수 있다.
즉 if line % 2 == 0: (짝수 라인 일 땐,)
x = N
y = line - N + 1,
else:
y = N
x = line - N + 1
이런 조건문을 통해 답을 구하면 된다.
더 완벽하게 이해해서 다음 번에 다시 풀어보고 싶다!ㅠㅠ