데이터 엔지니어

프로그래머스 월간 코드 챌린지 1 후기 본문

프로그래밍(Programming)/알고리즘(Algorithm)

프로그래머스 월간 코드 챌린지 1 후기

kingsmo 2020. 9. 11. 12:33

프로그래머스 사이트에서 주최한 월간 코드 챌린지에 참가하였습니다.

9 / 10 / 11 월 각 한번씩 열리며 각 대회마다 4개의 문제가 주어져 1, 2, 3 등에게는 상금을 수여하고, 세 번의 대회에서 총 5문제 이상 풀 경우 이벤트 상품에 응모할 수 있는 챌린지입니다.

저는 상금 받을 정도의 실력자가 아니기 때문에 알고리즘 실력도 늘리고 이벤트 응모라도 하기 위해 참가하였습니다!

문제와 풀이를 완전히 공유하는 것은 불법이기 때문에 4문제에 대한 제 개인적인 난이도 풀이로 후기를 남기겠습니다

자세한 사항은 아래 링크를 참조해주세요.

 

링크: programmers.co.kr/competitions/417?slug=monthly-code-challenge-s1&utm_campaign=competition417&utm_medium=introduce_competition417&utm_source=programmers

 

프로그래머스 월간 코드 챌린지 시즌1

접수   20년 08월 27일 14:00 ~ 11월 05일 18:00 진행   20년 09월 10일 19:30 ~ 11월 05일 22:30

programmers.co.kr


문제

프로그래머스 레벨 기준으로 작성해보겠습니다. (level 1 ~ 5)

 

1번 문제 LEVEL 1 ~ 2

리스트가 주어지고, 그 안에서 두 숫자만 뽑아 만들 수 있는 합들을 출력하는 문제였습니다.

저는 combination 라이브러리와 set을 사용하여 쉽게 풀었던 문제입니다.

따로 설명드릴게 없네요 ㅎ

 

비슷한 문제: www.acmicpc.net/problem/3273

 

3273번: 두 수의 합

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는

www.acmicpc.net

 

2번 문제 LEVEL 2 ~ 3

여기부터 조금 까다로워졌습니다. 옛날에 달팽이 출력문제를 풀어본 경험이 있는데 이 문제는 사각형이 아닌 삼각형을 달팽이 형식으로 출력하는 문제였습니다.

삼각형 그리는 코드를 먼저 짜고, 숫자가 어느 인덱스에 들어가야하는지 계산하며 엄청난 하드코딩으로 이 문제를 해결하였습니다.

 

비슷한 문제: www.acmicpc.net/problem/1913

 

1913번: 달팽이

N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서

www.acmicpc.net

3번 문제 LEVEL 2 ~ 3

정확히는 기억이 안나는데 풍선이 들어간 리스트가 주어지고 조건에 따라 인접한 풍선을 터뜨려가며 마지막까지 살아남을 수 있는 풍선의 개수를 출력하는 문제 였습니다. 

조건은 '옆보다 작을 경우는 터뜨리기는 한번만 가능하다' 이런 식으로 2개정도 주어졌던 걸로 기억합니다.

 

저는 시간이 부족하여 이 문제를 해결하지 못하였는데, 풀이는 풍선 기준으로 왼쪽에 작은수가 몇개 있는지 오른쪽에 몇개 있는지를 세어서 조건을 검사하는 식으로 생각보다 간단하게 해결할 수 있었던 문제였습니다.

 

비슷한 문제는 저도 모르겠네요 ㅠ

 

4번 문제 LEVEL 3 ~ 4

제일 어려웠던 문제입니다.

a라는 0과 1로 이루어진 2차원 배열이 주어지고 a와 맞는 짝꿍 배열 b의 개수를 찾는 문제였습니다.

짝궁 배열이 되기위한 조건이 여러가지 있는데

조건의 예

1. a, b 각 열의 1의 개수가 같아야 한다.

2. b의 각 행의 1의 개수는 짝이여야 한다.

등 5가지 정도의 조건이 있었던 걸로 기억합니다.

 

저는 열의 개수를 고정시킨채 나올 수 있는 배열을 combination으로 구해서 풀었는데, 역시나 시간초과가 나왔습니다. 정확성 33.3점만 통과하였습니다. ㅠㅠ

끝나고 생각해보니 해당 문제는 N-Queen과 비슷한 문제처럼 보이더라고요. 백트래킹으로 해결하면 되지 않을까 라는 제 추측입니다. 푸신 분 있으면 풀이방법 공유 부탁드립니다.

 

비슷한 문제: programmers.co.kr/learn/courses/30/lessons/12952

 

코딩테스트 연습 - N-Queen

가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은

programmers.co.kr

N-queen 풀이: data-engineer.tistory.com/22


1등 분께서는 20분만에 4문제를 다 푸셨네요 ㄷㄷ..... 저는 정확히 푼건 2개밖에 안되는데 조금씩 알고리즘 실력이 늘어가는 게 보입니다! 계속 정진하도록 하겠습니다. 

참고로 문제는 9월 16일에 공개된다고 하니 그 때 직접 풀어보시면 좋을 것 같습니다. 감사합니다~

Comments