본문 바로가기

study

(104)
[알고리즘/프로그래머스] 멀쩡한 사각형 Summer/Winter Coding(2019) > 멀쩡한 사각형 / level2 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 나의 풀이 접근방법 1. 가로/세로 길이 W, H의 최대공약수를 구한다. 예시 그림을 보면 2*3 사각형이 4개 반복되면서 규칙적으로 있는 모습이다. 2*3은 가로가 8, 세로가 12인 사각형의 최대공약수인 4로 나눠준 수이다. 여기서 힌트를 얻어 최대 공약수를 구해 사용하였다. (gcd 함수 사용하지 않고 그냥 구했음) m = min(w, h) whil..
[알고리즘] 정렬 알고리즘 공부 : 동빈나 유튜브 정렬(Sorting) : 데이터를 특정한 기준에 따라 순서대로 나열하는 것 1. 선택정렬 - 처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 - 시간 복잡도 : O(N²) N번 만큼 가장 작은 수를 찾아서 맨 앞으로 보낸다. 전체 연산 횟수 = N + (N-1) + (N-2) + … + 2 = (N² + N - 2) / 2 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i #가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if array[min_index] > array[j]: mi..
[알고리즘/백준] 21758번 꿀 따기 21758번 꿀 따기 - https://www.acmicpc.net/problem/21758 접근 방법 1. 무조건 꿀통은 끝에 있어야 한다. --> 그래야 꿀벌이 지나가는 칸 수가 늘어난다. 2. 하나의 꿀벌은 맨 끝에서 출발한다. --> 1번과 일맥상통 3. 꿀통이 왼쪽에 있냐 / 오른쪽에 있냐의 경우의 수 2가지 + 장소 칸이 3개일 경우 + 장소 칸이 3개일 경우에는 중간 칸이 꿀통 위치가 될 수 있음 if len(honey_list) == 3: answer = max(2*honey_list[1], answer) 4. 또 다른 꿀벌의 모든 경우의 수는 반복문으로 해결 코드 - 처음에 서브태스크 4번 시간 초과 def honey(idx1, idx2, list_name): return sum(list..
[알고리즘/프로그래머스] 가장 큰 수 정렬 > 가장 큰 수 / level2 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 나의 풀이 접근방법 1. permutations 사용 --> 문제점 : 시간 초과 접근방법 2. 문자열이 큰 순서대로 정렬하면 될 것 --> 문제점 : 3, 30이 있을 때 330이 아니라 303으로 정렬됨 접근방법 3. 문자열 정렬 비교 시 자릿수를 맞춰준다. - 문자열 중 가장 큰 자릿수를 구해서 맞춰줌 import itertools def solution(..
[알고리즘/프로그래머스] Level 1 끝 ! 파이썬으로 프로그래머스 Level 1 완료 😋 ( 몇문제는 SQL 문제라 오라클로 코드 작성 ) 코드 모음 : Algorithm/programmers/Level1 at master · mingxoxo/Algorithm (github.com) GitHub - mingxoxo/Algorithm: 알고리즘 알고리즘. Contribute to mingxoxo/Algorithm development by creating an account on GitHub. github.com 문제 : 코딩테스트 연습 | 프로그래머스 (programmers.co.kr) + 2022.01.28 신고 결과 받기 | 프로그래머스 (programmers.co.kr)
[알고리즘/프로그래머스] 소수 찾기 연습문제 > 소수 찾기 코딩테스트 연습 - 소수 찾기 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..