본문 바로가기

728x90

study/알고리즘

(44)
[알고리즘/프로그래머스] 소수 찾기 연습문제 > 소수 찾기 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 처음에 시간 초과가 나서 참고한 프로그래머스 질문하기 글 🔽 효율성 테스트를 위한 조그마한 조언 | 프로그래머스 (programmers.co.kr) 1. 1보다 큰 모든 자연수는 소수의 곱으로 이루어져 있다. 2. 어떤 자연수 n이 있을 때, √n 보다 작은 모든 소수들로 나누어 떨어지지 않으면 n은 소수입니다. 3. 2보다 큰 모든 짝수는 어차피 합성수입니다. 어차피 2로 나누어 떨어지기 때문 나의 풀이 - en..
[알고리즘/백준] Brute Force - 2309번 일곱난쟁이 / 17086번 아기상어2 브루트 포스 - Brute(무식한) + Force(힘) : 완전 탐색 알고리즘 가능한 모든 경우의 수를 탐색하고 조건에 충족되는 결과만을 가져온다. 참고 : https://codesyun.tistory.com/79 2039번 일곱난쟁이 - https://www.acmicpc.net/problem/2309 접근 방법 - itertools.permutations 함수 사용 파이썬으로 풀었기 때문에 가능한 것 같은 풀이라 아쉽다. import itertools height = [] for i in range(9): height.append(int(input())) for key in list(itertools.permutations(height, 7)): if sum(key) == 100: answer = k..
[알고리즘/프로그래머스] 퍼즐 조각 채우기 위클리 챌린지 > 퍼즐 조각 채우기 코딩테스트 연습 - 퍼즐 조각 채우기 [[1,1,0,0,1,0],[0,0,1,0,1,0],[0,1,1,0,0,1],[1,1,0,1,1,1],[1,0,0,0,1,0],[0,1,1,1,0,0]] [[1,0,0,1,1,0],[1,0,1,0,1,0],[0,1,1,0,1,1],[0,0,1,0,0,0],[1,1,0,1,1,0],[0,1,0,0,0,0]] 14 [[0,0,0],[1,1,0],[1,1,1]] [[1,1,1],[1,0,0],[0,0,0]] 0 programmers.co.kr 나의 풀이 - BFS를 사용하여 각 판에 있는 퍼즐 조각 좌표를 찾는다. 같은 퍼즐 조각(또는 빈 자리 조각)끼리 같은 리스트 안에 들어가도록 해줌 그리고 option을 사용하여 game_board..
[알고리즘/프로그래머스] 전력망을 둘로 나누기 위클리 챌린지 > 전력망을 둘로 나누기 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 나의 풀이 - BFS 사용해서 끊을 수 있는 모든 경우의 수를 구해 가장 작은 값을 구한다. - 시간이 오래 걸리는 것 같다. 다른사람의 풀이 - Union find (disjoint-set) 사용 -- 공부 필요 - defaultdict로 처음 dict 초기화 : 빈 딕셔너리는 미리 삽입하지 않은 key를 호출하면 에러 발생 --> 이를 방지해줌 from collections import defaultdict
[알고리즘/프로그래머스] 교점에 별 만들기 위클리 챌린지 > 교점에 별 만들기 코딩테스트 연습 - 교점에 별 만들기 [[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, - programmers.co.kr 나의 풀이 - 각 min값을 좌표 0으로 바꾸듯이 구하면 box가 밑에서부터 차기 때문에 뒤집어서 저장해 출력해주어야 함 import itertoo..
[알고리즘/프로그래머스] 비밀지도 2018 KAKAO BLIND RECRUITMENT > [1차] 비밀지도 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 나의 풀이 - 비트연산자 ㅣ 사용 - 이진수 변환 함수 bin() --> 출력값 0bXXX (str형) - replace 함수 사용 def solution(n, arr1, arr2): answer = [] for i in range(n): bin_str = bin(arr1[i] | arr2[i]).replace('b', '0')[-n:] answer.append(((n-len(bin..
[알고리즘/프로그래머스] 튜플 2019 카카오 개발자 겨울 인턴십 > 튜플 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 나의 풀이 - replace 함수 사용 - 숫자만 남긴 리스트를 구한 후 각 숫자의 개수를 세어 순서를 맞춰 리스트에 추가해준다. def solution(s): s = s.replace('{', '') s = s.replace('}', '') num_list = list(map(int, s.split(','))) answer = [0] * len(set(num_lis..
[알고리즘/프로그래머스] 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 >숫자 문자열과 영단어 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 나의 풀이 - 너무 복잡하게 풀었다.. 😥 def solution(s): number = ["zero", "one", "two", "three", "four", "five","six" ,"seven","eight","nine"] answer = 0 while s: if '0'

반응형