본문 바로가기

취업준비/알고리즘 문제 반추

프로그래머스 사이트 문제 정리하기. [20210928시작][최신 갱신: 20210930]

코딩 테스트를 통과하기 위한 역량을 길러준 문제들 정리.

 

코드를 초기화하고 복습으로 다시 풀면 여러 유형의 문제들에 대한 감을 익히는데 도움을 주지 않을까 한다.

 

그래서 유형별 문제들을 정리해본다!

 

내가 경험한 바로는 1 티어 기업들(라인, 네이버, 카카오, 쿠팡 등등...)의 코딩 테스트를 통과하려면

 

Level 3와 Level 2(중에서도 난이도 높은 분야)의 문제를 풀어본 배경들이 있어야 한다. (필수적!!)

 

또한 몇몇 문제에서는 효율성의 함정이 있을 수 있다는 것도 고려해야 한다.

 

코딩 테스트에서는 알고리즘 풀이 + 효율성 테스트에 대한 문제가 각각 출시되기 때문!!

 


완전 탐색(BFS, DFS) 

 

순열(Permutation) [ 순열을 직접 짜보는 힘을 기르자! ]

1. 단체 사진 찍기. link : https://programmers.co.kr/learn/courses/30/lessons/1835

 

코딩테스트 연습 - 단체사진 찍기

단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두

programmers.co.kr

 

2. 타겟 넘버. link : https://programmers.co.kr/learn/courses/30/lessons/43165

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

3. 가장 큰 수. link : https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

4. 소수 찾기. link : https://programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr

5. 수식최대화. link : https://programmers.co.kr/learn/courses/30/lessons/67257 [ 20210929 추가 ]

설명.

순열의 수가 적어서 직접 순열로 나올 수 있는 결과들을 제작하고 로직을 돌려도 충분한 문제이다.

하지만 순열을 적용해야 하는 문제들은 직접 순열을 적용해 보는 것이 바람직하다. (직접 순열 로직을 구현해봄으로써 언제든 순열을 짜 볼 수 있는 힘을 길러야 한다.)

+ 순열의 결과를 얻은 순간, 문제의 로직을 운영해서 답을 구해야 하는 문제이다.

문제의 로직을 처리하는 부분의 난이도가 상당한 편이다. [ 체감상 1시간 30분 정도의 문제로 예상한다.]

 

 

 

 

조합(Combination) [ 조합과 순열은 큰 차이가 없다. for문의 진입점이 다를 뿐! ]

1. 메뉴 리뉴얼. link : https://programmers.co.kr/learn/courses/30/lessons/72411

 

코딩테스트 연습 - 메뉴 리뉴얼

레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서

programmers.co.kr

 

2.


DP(Dynamic Programming : 메모이제이션 : Bottom Up)

1. link : https://programmers.co.kr/learn/courses/30/lessons/12905

 

코딩테스트 연습 - 가장 큰 정사각형 찾기

[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9

programmers.co.kr

 

 


2차원 배열 탐색 진행하기.

1. 카카오 프렌즈 컬러링북 : link : https://programmers.co.kr/learn/courses/30/lessons/1829

 

코딩테스트 연습 - 카카오프렌즈 컬러링북

6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5]

programmers.co.kr

 

2. 

 

 


Two-Pointer 활용

1. 문자열 압축 : link : https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

2.


효율성 체크 [ 알고리즘도 중요하지만 효율성이 추가 점수로 주어지는 문제 ]

1. 무지의 먹방 라이브 : link : https://programmers.co.kr/learn/courses/30/lessons/42891

 

코딩테스트 연습 - 무지의 먹방 라이브

 

programmers.co.kr

2. 광고 삽입 : link : https://programmers.co.kr/learn/courses/30/lessons/72414

 

코딩테스트 연습 - 광고 삽입

시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11

programmers.co.kr

 

PriorityQueue

1. 더 맵게 : link : https://programmers.co.kr/learn/courses/30/lessons/42626?language=java 

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

전체적인 알고리즘도 중요하지만 효율성까지 고려해야 하는 문제이다.

 


재귀 문제

1. 월간 코드 챌린지 시즌1. 쿼드압축 후 개수세기 : link : https://programmers.co.kr/learn/courses/30/lessons/68936

 

코딩테스트 연습 - 쿼드압축 후 개수 세기

[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]

programmers.co.kr

2d Array가 주어지고 각 영역에 똑같은 로직을 처리해야하는 재귀 문제이다. [ 2d array가 주어지고 재귀로 처리해야 하는 문제는 자주 나오는 편이다! ]

 

반응형