본문 바로가기

코딩

(6)
N으로 표현 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 검증해야 하는 경우의 수가 과도하기에, 단순히 모든 경우의 수를 다 탐색하기에는 무리가 따른다. DP(Dynamic Programming)를 활용하여 살펴본 경우의 수를 저장하면, 모든 경우를 일일히 계산하는 수고를 덜 수 있다. II. 알고리즘 설계 및 풀이 1. 변수 초기화 ans = -1 dp = [set() for _ in range(9)] dp는 N을 사용한 횟수별로 나울..
전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 모든 접두어 조합을 파악하고, 주어진 전화번호의 접두어가 앞서 파악한 조합에 있는 지 판별해야 한다. 접두어 조합은 O(n)으로 파악할 수 있지만, 알아낸 접두어 조합 안에서 탐색하는 것이 관건이다. 순차적으로 탐색할 경우, 최종적으로 O(n^2) 만큼의 시간복잡도를 소모하게 된다. 그 이유는 조합 형성에 더불어, 탐색에 추가적으로 O(n)의 시간복잡도를 소모하기 때문이다. 따라서..
리코쳇 로봇 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 BFS를 활용하여 최단 경로를 찾는 것이 문제의 목표이다. 하지만, 여기서는 로봇이 장애물 또는 경계에 부딪힐 때 까지 움직인다는 점에 주의해야 한다. 로봇이 한번에 한 칸씩 움직이는 상황이 아니다. II. 알고리즘 및 풀이 1. 초기화 및 탐색준비 # 1. 초기화 및 탐색준비 ans = -1 n, m = len(board), len(board[0]) que = deque() d..
요격 시스템 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 미사일은 최소로 발사해야 하니까, 가장 많이 겹치는 구간에 발사하는 방향으로 알고리즘을 설계해야 한다. II. 알고리즘 및 풀이 여기에서는 그리디 알고리즘과 정렬을 사용한다. 그리디 알고리즘은 현재 상황에서 최선의 선택을 하는 알고리즘이다. 1. 정렬 targets.sort(key = lambda x: x[1]) st = 0 ed = 0 주어진 폭격미사일들의 끝 구간을 기준으로,..
[PCCP 기출문제] 2번 / 석유 시추 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 개요 각 열에서 얻을 수 있는 석유 양의 총합 중, 최댓값을 구하는 문제이다. 알고리즘 풀기 위해선 단계를 나눠서 접근하면 좋다. 1) 한 석유 덩어리에서 얻을 수 있는 석유 양 oil 을 구한다 2) 석유 덩어리가 어느 열 사이에 걸쳐있는 지 파악한다 3) 2)에서 구한 열에서 뽑을 수 있는 석유 양에 oil을 더한다 4) 1~3의 과정을 모든 석유 덩어리에 대해 반복, 결과를 list에..
[PCCP 기출문제] 1번 / 붕대 감기 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 개요 공격 및 치유 여부에 따라 체력의 증감을 반영하여, 공격이 끝난 다음 최종적으로 남는 체력을 구하는 문제이다 알고리즘 1. 현재 체력과 추가회복 쿨타임을 변수에 저장한다. 2. 마지막 공격이 들어오는 시간까지, 현재의 체력 상태 및 쿨타임을 1초 단위로 갱신한다. 1) 공격이 들어온다면 회복 쿨타임을 초기화하고, 체력을 공격력만큼 깎는다. 체력이 0 이하가 되면 -1을 반환한다. 2) 공격..