본문 바로가기

알고리즘/프로그래머스(Python)

(39)
[알고리즘] 프로그래머스 압축 / python https://programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr KAKAO를 예시로 생각해보자.. 인덱스번호는 요래 생김 규칙성을 따져본다면, 현재글자 + 다음글자가 사전에 없다면 w = c , c = c + 1 현재글자 + 다음글자가 사전에 있다면 w는 변화없음, c = c + 1 c가 마지막 인덱스 번호라면, while문을 빠져나감 w, c의 규칙성을 이용해 출력해야할 색인번호를 append 해준다 def solution(msg): answer = [] dic = {}..
[알고리즘] 프로그래머스 방금그곡 / pyhton https://programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(m, musicinfos): dic = {} #사용되는 음이 아닌 문자로 변환 m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a') for info in musicinfos: #콤마를 기준으로 변수에 저장 start, end, title, music = info.spli..
[알고리즘] 프로그래머스 탑 / python https://programmers.co.kr/learn/courses/30/lessons/42588 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(heights): answer = [0] * len(heights) heights = heights[::-1] for i in range(len(heights)): for j in range(i+1, len(heights)): if heights[j] > heights[i]: answer[i] = len(heights)-j break return answer[::-1] 더 간결하게 푼 ..
[알고리즘] 프로그래머스 카펫 / python, 완탐 https://programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(brown, red): answer = [] for col in range(1, red+1): if red % col == 0: row = red // col print(row,col) if (row + 2) * (col + 2) - red == brown: answer.append(row + 2) answer.append(col + 2) break return answer answer..
[알고리즘] 프로그래머스 네트워크 / python, dfs https://programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, computers): answer = 0 visit = [0] * n def dfs(computers, visit, s): stack = [s] while stack: temp = stack.pop() visit[temp] = 1 for i in range(len(visit)): if computers[temp][i] == 1 and visit[i] == 0: stack.appen..
[알고리즘] 프로그래머스 실패율 / python https://programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(N, stages): fail = {} clear = len(stages) for i in range(1, N+1): if clear != 0: count = stages.count(i) fail[i] = count / clear clear -= count else: fail[i] = 0 return sorted(fail, key=lambda x : fail[x], reverse=True)
[알고리즘] 프로그래머스 오픈채팅방 / python https://programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def message(lst, dic): if lst[0] == 'Enter': return dic[lst[1]] + "님이 들어왔습니다." elif lst[0] == 'Leave': return dic[lst[1]] + "님이 나갔습니다." def solution(record): answer = [] dic = {} lst = [list(i.split(' ')) for i in record] for i in..
[알고리즘] 프로그래머스 여행경로 / python https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 | 프로그래머스 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 파이썬의 dictionary를 이용 ICN - SFO, ATL SFO - ICN 일 경우도 생각해서 코드를 짜야한다 def solution(tickets): routes = {} for i in tickets: routes[i[0]] = routes.get(i[0], []) + [i[1]] for j in routes: routes[j].sort(reverse=True..