https://programmers.co.kr/competitions/1836
300점 만점 / 200점
3문제 1문제당 100점이였고 1번째 문제와 2번째 문제를 풀어서 각각 100점씩 도합 200점으로 마무리했다. 문제 난이도 수준은 프로그래머스 2~3레벨 수준으로 보였고, 1레벨 문제는 하나도 없었다. 그리고 4레벨 문제도 없었다. 진짜 안내한 내용대로 2~3레벨 풀 정도면 수월하게 풀 수준이였다. 다만 2레벨 문제를 모두 푼 입장에서 봤을때 중복 문제는 안나왔다. 연습용으로 제공 되는 문제랑 똑같은 문제를 내지는 않는 것 같다. 아니면 전부 3레벨 문제였다던가.
첫번째 문제의 경우
각 그래프(?)의 간선이 주어지고 그 지점들을 자르고 그 자른 간선들의 갯수를 카운트해서 반환 하는 문제였다.
처음에는 2차원 배열이나 그래프 구조를 만들어서 잘라야하나 조금 고민 하긴 했으나 굳이 그럴 필요는 없었다.
해당 영역을 격리하는 질의가 주어졌을때 격리 된 지점들의 좌표를 모두 구해서 간선리스트를 필터링하면서 해당 간선을 이루는 두 지점 중 한 곳이 격리되는 영역에 포함 되어 있고 다른 지점이 포함 되어있지 않다면 필터링하고 그 갯수를 카운팅하는 방식으로 문제를 풀었다. 격리 되는 지점의 경우 hash구조를 이용했는데, 효율성을 높일려면 굳이 지점들을 일일이 구할 필요 없이 규칙에 맞게 처리하면 되긴한다. 다만 그럴 경우 판별하는 코드가 어쩔 수 없이 조금 난잡해지는데 그게 싫어서 객체에 좌표를 일일이 구했다.
두번째 문제의 경우
정렬 문제 였다. 3가지 입력값 모두 하나의 데이터를 배열로 나눈 것이였는데, 해당 부분을 연결해서 문제에서 요구하는 조건에 맞게 정렬한후 그 정렬된 순서에 맞는 (처음 입력 된 idx) 식별키를 배열에 담아서 반환 하는 간단한 문제였다.
제일 쉬운 문제로 보인다. 다만 나는 그래프 위의 두 지점의 직선거리를 구하는 수학공식이 생각 나지 않아서 조금 고생했다.
세번째 문제의 경우
두 배열을 합해서 최소 진동폭?(각 배열의 요소의 제곱합)을 구하는 문제였다. 문제 자체는 그렇게 어렵지 않았다.
첫번째 배열과 두번째 배열의 길이가 다를 수 있으니 그 배열 길이를 맞추고 첫번째 배열의 요소를 한칸씩 이동 시키면서 그에 맞게 두번째 배열의 순서 역시 이동시켜서 2 배열이 가질 수 있는 모든 조합의 진동폭인가 뭔가를 구해서 반환하는 문제였다. 다만 정확 하지 않은점은 해당 문제를 풀기에는 개인적으로 컨디션이 안좋고, 시간이 부족해서 포기했다.
결론
이번 챌린지을 통해서 알게 된것은 어지간한 2~3레벨 문제를 푸는데는 문제가 없다는 점.
다만, 한문제를 푸는데 걸리는 시간을 줄일 필요가 있다는 점이다. 2문제를 풀고 나니 시간이 30분 정도 남아있었다.
또 해당 챌린지의 경우 실 문제 제출수나 정답수, 그리고 참가자수(대략 천백명), 순위를 실시간으로 피드백 해줬는데 1등의 경우 3문제 모두 푸는데 51분 정도 소요했다. 평균적으로 3문제 모두 푼 사람들의 경우 1시간 좌우로 시간을 쓰더라 물론 30분 남은 시점에서 3문제 다푼 사람은 다해봐야 20명도 안되었지만 개선점을 찾은게 좋았다.(다른 사람말로는 최종은 36명)
또 컨디션 관리에 신경써야 한다는 점이다. 이번 챌린지의 경우 아침 10시 ~ 점심 12시 까지 진행 되었는데 나 같은 경우 개인적인 문제로 오늘 새벽 5시에 자고 아침9시59분에 일어나서 세수를 하
고 바로 챌린지를 참가했다. 피곤하고 몽롱한 상태(속도 안좋았고)여서 문제 풀이에 시간을 더 쓴 점도 있을거다.
'일상' 카테고리의 다른 글
정리된 루틴을 만들자. (0) | 2021.12.21 |
---|---|
어렵다. (0) | 2021.12.07 |
프로그래머스 2레벨 끝! (0) | 2021.11.15 |
알고리즘 풀이 (0) | 2021.11.05 |
코로나 19 관련 작은 정리 (0) | 2021.10.26 |