알고리즘 664

[Lv.2 / 프로그래머스 / 파이썬] 모음사전

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 사전 정렬 규칙에 따라 단어를 순서대로 만들었을 때, 주어진 단어의 번호를 출력해야 한다. 다음 단어를 만드는 법은 다음과 같다. 1. 'A'를 붙인다.2. 끝 글자를 다음 순서의 모음으로 교체한다. 만약 끝 글자가 U일 경우, 그 다음 순서의 모음을 교체해야 하므로, U를 제거한 뒤 다음 순서로 넘어가면 된다. def solution(word): alpha = ['A', 'E', 'I', 'O', 'U'] cur_word = 'A' cnt = 1 while cur_word != word: cnt += 1 ..

[Lv.2 / 프로그래머스 / 파이썬] 무인도 여행

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 연결된 땅들의 크기를 계산하여 각 섬의 크기를 오름차순으로 출력하는 문제이다.DFS 및 BFS를 사용하여 해결할 수 있다. 작성된 코드의 알고리즘 순서는 다음과 같다. 맵을 탐색하며 X가 아닌 부분(섬의 일부)을 찾는다.섬의 일부를 발견한 경우, BFS로 섬 전체를 탐색한다.섬을 방문한 좌표의 경우 X로 표시로 체크하여 재방문을 막는다.섬 탐색이 끝나면 현재 섬의 크기를 저장한 다음, 맵을 이어서 탐색하며 다른 섬들을 찾는다.맵 탐색이 전부 끝나면, 저장된 섬의 크기를 오름차순 정렬한 다음 반환한다. def solution(maps): board = [..

[Lv.2 / 프로그래머스 / 파이썬] 지게차와 크레인 (2025 프로그래머스 코드챌린지 1차 예선)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 requests를 순회하며 처리하는 시뮬레이션에서 BFS를 수행하는 문제이다. BFS를 가장자리부터 진행하도록 하기 위해 빈 값으로 storage를 래핑해주었다.그리고 주어진 요청을 순회하며 BFS 혹은 전체 삭제를 진행한다.순회가 종료되면, 남은 블럭의 개수를 리턴한다. BFS를 진행할 때, 현재 요청 타입에 맞는 블럭과 만났을 때 즉시 삭제하지 않도록 따로 삭제 예정 리스트를 구성한 다음 처리해야 한다. 그렇지 않으면 같은 타입의 블럭 뭉치를 만났을 때, 연결된 모든 부분을 삭제하게 된다. def solution(storage, requests)..

[Lv.2 / 프로그래머스 / 파이썬] 귤 고르기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 귤의 크기별로 그 개수를 센 딕셔너리를 구성한다.그리고 개수를 기준으로 내림차순 정렬한다.개수가 가장 많은 종류부터 선택하여 k에서 선택한 종류의 개수를 뺀다.k가 남았다면 3번을, k가 0이거나 음수가 되면 목표치를 달성한 것이므로 지금까지 선택한 종류의 수를 return 한다. def solution(k, tangerine): # 딕셔너리 구성 d = dict() for i in tangerine: if i in d: d[i] += 1 else: d[i] = 1 ..

[Lv.2 / 프로그래머스 / 파이썬] 비밀 코드 해독 (2025 프로그래머스 코드챌린지 1차 예선)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 1부터 n까지 5개의 숫자로 만들 수 있는 정수 조합들을 모두 탐색하며 해결해야 하는 문제이다.조합을 만든 뒤, q랑 비교해보며 ans 와 같은 결과가 나오는 조합이면 비밀 코드에 해당된다. itertools를 활용하면 조합을 보다 쉽게 생성할 수 있다. import itertoolsdef solution(n, q, ans): # 배열의 전체 조합 arrs = itertools.combinations([i for i in range(1, n+1)], 5) # 배열을 순회하며 탐색 res = 0 for arr in a..

[Lv.1 / 프로그래머스 / 파이썬] 유연근무제 (2025 프로그래머스 코드챌린지 1차 예선)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 시간 체크를 쉽게 하기 위해 모든 시간을 분으로 바꿔 계산하도록 한다.또한 요일 체크를 쉽게 하기 위해 나머지 연산을 사용하면 좋다. def solution(schedules, timelogs, startday): result = 0 # 직원 순회 for i in range(len(schedules)): schedule = convert(schedules[i]) + 10 timelog = timelogs[i] cur_day = startday - 1 # 출근 기록 ..

[Lv.1 / 프로그래머스 / 파이썬] 택배 상자 꺼내기 (2025 프로그래머스 코드챌린지 2차 예선)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 주어진 조건대로 상자를 쌓은 뒤, 해당 지점에서부터 몇 층의 박스가 쌓여있는지 확인하면 된다. def solution(n, w, num): # 박스 정리 MAX_ROW = n//w+1 boxes = [] for row in range(MAX_ROW): boxes.append([row*w + i if row*w + i = MAX_ROW: return res if boxes[r][c] == 0: return res

[Lv.1 / 프로그래머스 / 파이썬] 데이터 분석 (PCCE 기출문제 10번)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 리스트에 담겨 있는 자료를 조건에 따라 적절히 필터링하고, 정렬하여 출력하는 문제이다. sort 함수의 key 파라미터로 람다 함수를 넘겨 보다 쉽게 정렬할 수 있다. def solution(data, ext, val_ext, sort_by): idx = ["code", "date", "maximum", "remain"] data = [d for d in data if d[idx.index(ext)]

[🥇5 / 백준 31423 / 파이썬] 신촌 통폐합 계획

31423번: 신촌 통폐합 계획첫 번째 줄에 대학교의 개수 $N$이 주어진다. $(2 \leq N \leq 500 \, 000)$ 다음 $N$개의 줄의 $i$번째 줄에 대학교 이름을 의미하는 알파벳 소문자로 이루어진 문자열 $s_i$가 주어진다. 주어지는 대학교www.acmicpc.net 문제극단적인 출산율 감소로 인해 신촌 지역 N개 대학교가 하나의 학교로 통합되었다.기나긴 회의 끝에, 통합된 학교의 이름은 N개 대학교의 이름을 이어 붙여서 정해졌다. 회의에서 통합된 학교의 이름을 정한 방법은 다음과 같다. N개 대학교의 이름 s1,s2,⋯,sN을 일렬로 나열한다. 이후 다음의 과정을 N−1번 반복한다. si,sj가 빈 문자열이 아닌 서로 다른 두 정수 i,j를 고른다. si의 뒤쪽에 sj를 이어 붙인..

[Lv.1 / 프로그래머스 / 파이썬] 카드 뭉치

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이 goal에 있는 단어를 순회하며 두 카드 뭉치의 맨 앞에 있는 단어가 일치하는 경우 꺼내서 사용한다.두 카드 뭉치 모두에서 일치하는 단어가 없다면 No를 반환한다.goal을 모두 성공적으로 순회했다면 Yes를 반환한다. 두 카드 뭉치의 맨 앞에 있는 것부터 순차적으로 사용해야 하므로 스택으로 변형하여 pop()을 활용하였다. def solution(cards1, cards2, goal): cards1 = cards1[::-1] cards2 = cards2[::-1] for word ..

반응형