본문 바로가기

알고리즘

(138)
[알고리즘] 프로그래머스 파일명 정렬 / python https://programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import re def solution(files): file_lst = [re.split('([0-9]+)',i) for i in files] file_lst.sort( key = lambda x : ( x[0].lower(), int(x[1]) ) ) return [''.join(lst) for lst in file_lst] re.split('([0-9]+)', i) #숫자를 기준으로 나눈다 fil_ls..
[알고리즘] 프로그래머스 n진수게임 / python https://programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def trans(n, num): arr = "0123456789ABCDEF" ret = '' if num == 0: return '0' while num > 0: ret = arr[num % n] + ret num = num // n return ret def solution(n, t, m, p): answer = '' string = '' for i in range(t*m): string += trans(..
[알고리즘] 프로그래머스 압축 / 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)