[프로그래머스] / [Level 3] / [Python] 가장 먼 노드
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr다익스트라(Dijkstra) 알고리즘을 사용하였다.import heapqdef solution(n, edge): graph = [[] for _ in range(n+1)] distance = [float('inf') for _ in range(n+1)] visited = [False for _ in range(n+1)] for e in edge: graph[e[..
[프로그래머스] / [Level 3] / [Python] 징검다리 건너기
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 슬라이딩 윈도우 방식을 사용하여 범위 k개의 내의 리스트 중 최대값을 구하고 그 최대값들 중 최소값을 구하면 된다. def solution(stones, k): answer = [] for idx in range(0, len(stones) - k + 1): answer.append(max(stones[idx:idx+k])) return min(answer) 하지만, 효율성 테스트에서 통과하지 못하..
[프로그래머스] / [Level 3] / [Python] 보석 쇼핑
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2중 for문을 사용한다면 쉽게 해결이 가능하지만, 시간 초과를 출력한다. 결국 시간 복잡도가 O(n)인 방식을 사용해야하는데, 투포인터 알고리즘을 사용하여 해결을 시도하였다. 처음에는 특정 범위에서 필요한 보석 수의 갯수만 있으면 된다고 판단하여 len(set(gems[start:end])) 를 사용하였다. 하지만 매번 해당 범위를 slice하고 집합으로 처리하는 과정에서 많은 시간이 소요된다는..
[프로그래머스] / [Level 3] / [Python] 불량 사용자
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ismatch 함수를 만들어 두 문자가 대체 가능한지 판단하도록 하였고, 알고리즘은 DFS를 사용하여 해결하였다. visited 리스트를 만들어 현재 탐색하고 있는 user가 중복되지 않게 하였다. def ismatch(a, b): if len(a) != len(b): return False for _a, _b in zip(a, b): if _a == '*' or _b == '*': continu..
[프로그래머스] / [Level 3] / [Python] 스티커 모으기(2)
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP를 사용하는데, idx 0번부터 시작하는 것과 1번부터 시작하는 것으로 크게 2가지로 나누어 구현하였다. def solution(sticker): L = len(sticker) if L == 1: return sticker[0] DP1 = [0] * L DP1[0], DP1[1] = sticker[0], sticker[0] for i in range(2, (L - 1)): DP1[i] = ma..
[프로그래머스] / [Level 3] / [Python] 기지국 설치
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr N의 크기가 2억 이하의 자연수이기 때문에 하나씩 탐색을 하게되면 시간초과를 출력한다. 따라서 제공되는 stations에 포함되지 않는 수의 개수를 계산해서 결과를 출력하도록 하였다. 이와 같은 경우 추가로 설치할 수 있는 '구역'은 1~2, 6~9 이다. 해당 범위의 개수인 2, 4를 (1+w*2)로 나눈 몫이 설치할 수 있는 기지국의 갯수가 된다 (나머지가 있는 경우 + 1). stations..
[프로그래머스] / [Level 3] / [Python] 숫자 게임
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제한 조건에 A와 B 리스트의 최대 길이가 100,000인 것을 확인하고 이중 for문을 사용하면 안된다고 판단하였다. (실제로 구현했을 때 시간초과를 확인할 수 있었다.) 또한, 조건에 A와 B의 리스트의 길이가 같다고 하였기 때문에 A와 B를 동시에 비교하기로 결정하였다. 먼저, A와 B의 리스트를 오름차순으로 정렬하여 비교하기 편하게 세팅하였다. 그 후, 마지막 원소부터 비교하여 A 원소보다..
[프로그래머스] / [Level 3] / [Python] 단어 변환
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS를 사용하여 해결하였다. 시작 단어와 방문하지 않은 단어들을 하나씩 삽입하여 목표 단어에 도달 할 때 까지 탐색하도록 구성하였다. ischangable 함수는 두 단어가 변환 가능한지 판단하도록 하는 함수이다. from collections import deque def ischangable(a, b): count = 0 for _a, _b in zip(a, b): if _a == _b: c..
욱근욱
'Coding Test/프로그래머스' 카테고리의 글 목록