프로그래머스 코딩테스트 수열과 구간 쿼리 3
답안
솔직히 음.. 이런 문제는 뭔가 예전에 풀어본 적 있어서 별도의 새로운 배열을 만들고 잠시 그 값에 저장한 다음 기존의 값에 되돌려 주는 걸 알고 있었지만,,,
어떻게 표현해야할지 모르겠더라고요..
그래서 2중 for문으로 해봤는데 막막해서… 2시간 정도 생각해 보다가.. 구글링을.. 해봤습니다.. 흑흑..
뭔가 저의 문제는 생각은 나는데 그걸 표현을 못하는 것 같더라고요
이 마음.. 표현하고 싶은데 말로 표현 못하겠어 뭐 이런 느낌이랄까.
그래서 https://sun-dori.tistory.com/19 이 분의 tstory를 참고했습니다.
근데 식을 봤는데 너무 간단해가지고.. 그거 아시죠 간단한 게 더 어려운 거..
그래서 나의 친구 chat gpt와 함께.. 답안을 분석해 봤는데 제가 못 받아들이더라고요 호호
그래서 일일이 아이패드에 써가면서 for문을 돌려봤습니다.
일단 제가 헷갈렸던 게, arr [queries [i][0]]의 부분을 system.out.println으로 찍으면 제 생각엔
queries의 0,1,1이 나와야 한다고 생각했는데 0,1,2가 나오더라고요
그래서 gpt한테 물어보니까 처음엔 0,1,1이 맞다고 해주더니 이상해서 0,1,2 아니냐고 물어보니 0,1,2가 맞다고 하고…
후… 그래서 더 헤매었습니다.
정답은 0,1,2가 맞고요 그건 외부에 arr []이 감싸고 있기 때문에 queries의 값은 arr의 자리를 의미하니까 queries의 0,1,1가 나타내는 arr의 0,1,1 자리의 값인 0,1,2를 가져와야 합니다.
ex) arr [queries [0][0]]일 때 arr의 자리는 arr [0] 임, 그래서 값은 0을 나타냅니다, 그리고 arr [queries [0][1]] (arr [3] = 3)와 값을 바꿔줍니다.
즉, 최종적으로 0,1,2,3,4 -> 3,1,2,0,4 -> 3,4,1,0,2로 변합니다..
arr | queries | result |
[0, 1, 2, 3, 4] | [[0, 3],[1, 2],[1, 4]] | [3, 4, 1, 0, 2] |
후.. 어찌나 헷갈리는지…
정말… 죽는 줄 알았습니다.
근데 포기 안 할 거예요
정말 누구에겐 쉬운 문제일 수 있지만, 처음부터 잘하면 무슨 재미겠습니까.
그러니 더 즐겁게 해 봐야죠 ㅎㅎ
(재미없고 싶다….)
참고 블로그 : https://sun-dori.tistory.com/19