No Limitation
[완전 탐색] 기초 연습 본문
난 완전 탐색이 왤케 어려운 것인가...
아래 기초 유형은 외우는 식으로도 해도 될거 같아서 가져옴
단순한 구현 연습들도 level 1~2이나 백준의 기초 유형들을 풀어가면서 익숙해져야겠다.. 코테 현장에서는 잘 안될 수 있으므로!
아래 문제는 생각보다 어려웠던 문제였다. 아마 내가 글을 잘 못 이해했을 수도 있다.
https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=python3
그래서 위 글을 참고했는데
https://codingwonny.tistory.com/295
이 경우의 핵심은 "큰 값 중의 최대"와 "작은 값 중 최대"를 곱할 때 모두를 포함할 수 있는 최소 값이 나온다는 점이었다.
물론 그냥 가로에서 최대 x 세로에서 최대를 하게 되면 전체 면적 중 가장 큰 면적이 나올 것이다.
이건 좀 외울만한 유형이라 익히면 좋을 거 같다.
def solution(sizes):
min_arr = []
max_arr = []
for ele in sizes :
min_arr.append(min(ele))
max_arr.append(max(ele))
return max(max_arr)*max(min_arr)
https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=python3
이 유형의 경우 [2,1,2,3,2,4,2,5,2,1,2,3,2,4,2,5,...] 와 같은 특정 패턴이 반복되는 것을 길이에 따라 어떻게 증가시켜주는 가에 대한 간단한 구현을 연습하기 좋은 문제.
일단 더럽게 대충 짜보았을 때
def solution(answers) :
L = len(answers)
stu1 = [1,2,3,4,5]
stu2 = [2,1,2,3,2,4,2,5]
stu3 = [3,3,1,1,2,2,4,4,5,5]
stu1 = stu1*((L//5)+1)
stu2 = stu2*((L//8)+1)
stu3 = stu3*((L//10)+1)
cor1 = 0; cor2 = 0; cor3 = 0
for i in range(L) :
if answers[i] == stu1[i] :
cor1+=1
if answers[i] == stu2[i] :
cor2+=1
if answers[i] == stu3[i] :
cor3+=1
max_val = max(cor1,cor2,cor3)
lists = []
lists.append((1,cor1))
lists.append((2,cor2))
lists.append((3,cor3))
lists = sorted(lists,key=lambda x:x[1], reverse=True)
final_stu = []
for final in lists :
if final[1] == max_val :
final_stu.append(final[0])
final_stu.sort()
return final_stu
하지만 이런 쉬운 문제여도 반복 숙달이 필요하다. IDE 안써보고 하는 연습도 필요할 듯
'프로그래밍' 카테고리의 다른 글
[완전 탐색] 순열 & 조합 익숙해지기 (0) | 2024.03.19 |
---|---|
[BFS] 섬의 갯수 (1) | 2024.03.18 |
[DFS] leaf node부터 count 해주는 개념 익히기 (1) | 2024.03.18 |
[BFS] 동일 SET 영역 구하기 (1) | 2024.03.17 |
[DFS/DP] MAP 형태에서 DFS와 DP를 활용한 대표예제 (0) | 2024.03.17 |