본문 바로가기

프로그래밍/알고리즘126

프로그래머스 - 같은 숫자는 싫어 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 내가 푼 코드 def solution(arr): answer = [] for i in range(len(arr)-1): if arr[i] != arr[i+1]: answer.append(arr[i]) answer.append(arr[-1]) return answer 불필요한 코드의 향연... 다른 사람 풀이 def solution(s): a = [] for i in s: if a[-1:] == [i]: continue a.append(i) return a 예외케이스(맨 마지막 케이스) 처리 깔끔하고.. 2023. 5. 8.
취업과 이직을 위한 프로그래머스 코딩테스트 문제풀이전략 - 배열 취업과 이직을 위한 프로그래머스 코딩테스트 문제풀이전략이라는 책을 읽고 배열 파트 정리를 했다 개념 배열: 연속적으로 데이터를 집어넣을 수 있는 1차원 형식의 자료 구조 문제 풀이 1. 교점에 별 만들기(level 2) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 더보기 def solution(line): #prevent swallow copy pos, answer = [], [] n = len(line) x_min = y_min = int(1e15) x_max = y_max = -int(1e15) for i in range(n): a, b, e = l.. 2023. 5. 3.
앞으로 (반복해서) 풀 알고리즘 유형별 문제(총 50개) 1. 완전탐색 & 백트래킹 기본 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 응용 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7.. 2023. 5. 2.
프로그래머스 - 완주하지 못한 선수 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘 나이키 매장에 갔는데 '나이키 에어 줌 페가수스 40'은 진짜 착화감이 짱이었다 다른 거 신어보고 마지막에 신어봤는데 '와.. 다르다'는 것이 느껴졌고 바로 구매했다 역시 족저근막염 환자분들, 많은 운동선수들이 신는다는데 이유가 있었다 풀이 1. 해시를 활용한 방법 def solution(participant, completion): hashDict = {} sumHash = 0 for part in participant: hashDict[hash(part)] = part sumHash += has.. 2023. 4. 26.
'if-if-else'가 아니라 'if-elif-else'를 사용해야 하는 이유 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 틀린 코드 만약에 이 문제에서 답을 아래와 같이 적으면 틀린다 def solution(arr): answer = [] for i in arr: #첫번째 if문 if i >= 50 and i%2 == 0: answer.append(i//2) #두번째 if문 if i .. 2023. 4. 25.
백준 11404 - 플로이드 파이썬 문제 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 개념(플로이드 워샬) 위에서 첫 번째 외부 반복문의 반복 이전은 k = 0으로 표시했으며, 이것을 통해 알게 된 경로는 그래프의 한 변에 대응한다. k = 1일 때, 꼭짓점 1을 통과하는 경로를 찾을 수 있다: 특히, 경로 [2,1,3]을 찾았기 때문에, 변이 더 적지만 더 (가중치의 관점에서)긴 경로인 [2,3]을 대체한다. k = 2일 때, 꼭짓점 {1,2}를 통과하는 경로를 찾았다. 빨간 색과 파란 색의 네모는 경로 [4,2,1,3]이 경로 [4,2]와.. 2023. 4. 18.
백준 1753 - 최단경로 파이썬 문제 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 다익스트라 개념(동빈나 강의 참고) 다익스트라 알고리즘은 한 지점에서 다른 모든 지점까지의 최단 경로를 계산하는 알고리즘이다. 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 위 과정에서 3번과 4번을 반복한다. 코드 import sys import heapq in.. 2023. 4. 17.
DP 점화식 손으로 정리하기(파이썬) 매주 화요일 오프라인 알고리즘 스터디를 하면서 'dp'파트는 서로 5문제를 정해서 각자 점화식 도출방법을 정리해 오기로 했다 내가 담당하는 문제들의 점화식을 직접 적으면서 도출해보았다 느낀 점: dp는 점화식을 도출하기 위해 n=1,2,3....을 대입해 보는 것도 필승 전략 중 하나이다 1. 타일 채우기 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net def main(): n = int(input()) dp = [0] * 31 dp[0] = 1 dp[2] = 3 for i in range(4, n + 1): dp[i] = dp[i - 2] * 3 for j in range(4, i + 1, 2): dp[i] += dp.. 2023. 4. 12.
프로그래머스 - 숫자 문자열과 영단어 파이썬 문제 코딩테스트 연습 | 프로그래머스 스쿨 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요! school.programmers.co.kr 이 문제는 카카오 인턴 기출문제이다 해결 코드 num_dic = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'} def solution(s): answer = s for key, value in num_dic.items(): answer = answer.replace(key, value) re.. 2023. 4. 11.