본문 바로가기

프로그래밍/알고리즘128

프로그래머스 - 카운트 다운 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 정리 용어 정리 - 카운트 다운 = 무작위로 정해진 점수를 다트로 깎아서 0점을 만드는 게임 - 점수 설명 싱글 - 해당 수 만큼 점수 얻음(1,2,3....20까지의 점수) 더블 - 해당 수 두 배 만큼 점수 얻음(2,4,6...40까지의 점수) 트리플 - 해당 수 세 배 만큼 점수 얻음(3,6,9....60까지의 점수) 불, 아우터 불 - 50점 얻음 경기 정리 - 한줄 정리: 빨리 0점 만들기, 같으면 '싱글', '불' 최대한 많이 던지기 - 한 게임에는 두 선수 참가 - 교대로 한 번씩 던지.. 2023. 5. 17.
프로그래머스 - 억억단을 외우자 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 정리 한 줄 정리 starts의 변수에서 e파라미터까지 범위 숫자의 약수의 개수 중 가장 많은 약수를 가진 숫자를 차례로 반환하는 문제 포인트 - 억억단에서 해당 자연수가 등장하는 횟수 = 악수의 개수와 동일 예를 들어 8이 억억단에 등장하는 횟수는 1*8 2*4 4*2 8*1이다 이는 8의 약수의 개수인 4(1, 2,4,8)와 동일하다 - 시간초과 안 걸리기 = 약수의 개수를 한꺼번에 구하기, 여러 번 돌면 안 됨 문제 풀이 순서 - 시작은 랜덤이지만 끝지점은 e파라미터로 정해져있음 -> 그래서 .. 2023. 5. 15.
프로그래머스 - 같은 숫자는 싫어 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. 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.