2023 팀네이버 신입 공채 준비 (6) 프로그래머스 정렬 & 완전탐색
오늘 한 리스트
- 프로그래머스 정렬 2 문제
- 프로그래머스 완전탐색 4 문제
이 포스팅도 github 연결이 끊기면서 날라가버렸다… 최대한 기억나는대로만 정리해놔야겠다.
프로그래머스 정렬 가장 큰 수
- 문제 유형 : 정렬
가장 큰 수 찾기def solution(numbers): numbers_t=[i*3 for i in map(str,numbers)] test=sorted(numbers_t,reverse=True) answer="" zero=0 for i in test: if i=="000": zero+=1 continue answer+=i[:int(len(i)/3)] if zero>0: for i in range(zero): answer+="0" return str(int(answer)) else: return str(int(answer))
int한 후에 str을 해줘야 올클이 됬던걸로 기억난다 0002 => 2로 바꾸기 위해서!
프로그래머스 정렬 H-Index
- 문제 유형 : 정렬
H-Index 찾기def solution(citations): citations=sorted(citations) length=len(citations) test=[] for i in range(length): if citations[i]>=length-i: return length-i return 0
거꾸로 생각하면 생각보다 쉬웠던 문제였다.
프로그래머스 완전탐색 최소직사각형
- 문제 유형 : 완전탐색
최소직사각형 찾기def solution(sizes): answer = 0 max_1,min_1=[],[] for i in sizes: if i[0]>=i[1]: max_1.append(i[0]) min_1.append(i[1]) else: max_1.append(i[1]) min_1.append(i[0]) return max(max_1)*max(min_1)
가장 큰쪽과 작은 쪽을 나눠서 계산
프로그래머스 완전탐색 모의고사
- 문제 유형 : 완전탐색
모의고사 점수 보기def solution(answers): type_1=[1,2,3,4,5] type_2=[2,1,2,3,2,4,2,5] type_3=[3,3,1,1,2,2,4,4,5,5] res_result=[] answer=[0,0,0] while answers: type_list=[type_1.pop(0),type_2.pop(0),type_3.pop(0)] ans=answers.pop(0) ans_list=[ans for i in range(3)] result_list=[1 if i==j else 0 for i,j in zip(type_list,ans_list)] answer=[i+j for i,j in zip(result_list,answer)] type_1.append(type_list[0]), type_2.append(type_list[1]), type_3.append(type_list[2]) max_res=max(answer) if answer[0]==max_res: res_result.append(1) if answer[1]==max_res: res_result.append(2) if answer[2]==max_res: res_result.append(3) return res_result
단순 반복으로 풀었다.
프로그래머스 완전탐색 소수 찾기
- 문제 유형 : 완전탐색
소수 찾기from itertools import * def solution(numbers): answer = 0 length=len(numbers) print_list=[] for i in range(1,length+1): print_list+=list(permutations(numbers,i)) #print_list=list(set(print_list)) all_list=[] for i in print_list: result_number='' for j in i: result_number+=j input=int(result_number) all_list.append(input) for k in list(set(all_list)): if k>1: for i in range(2,int(k/2)+1): if (k%i)==0: break else: answer+=1 return answer
가장 중요했던 건 2로 나누고 +1 더한 값들의 나눗셈이 있으면 소수가 아님을 보였다.
프로그래머스 완전탐색 카펫
- 문제 유형 : 완전탐색
카펫import math def solution(b, y): b_p_xy=int((b+4)/2) result=[] for i in range(1,b_p_xy): if i*(b_p_xy-i)==b+y: result.append(i) if len(result)!=1: return [result[1],result[0]] else: return [result[0],result[0]]
수식을 세우고 그 수식에 맞게 코드를 짯던 기억이 난다.
Leave a comment