CodingTest (20) 썸네일형 리스트형 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/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 의상을 최소 하나 이상 선택하는 경우의 수를 구하는 문제이다. II. 알고리즘 및 풀이 1. 의상 분류 ans = 0 dct = dict() for cloth in clothes: name, category = cloth if category in dct.keys(): # 이전에 본 카테고리라면 dct[category].append(name) # value(list)에 의상 추가 .. 전화번호 목록 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 주어진 폭격미사일들의 끝 구간을 기준으로,.. [PCCE 기출문제] 10번 / 데이터 분석 https://school.programmers.co.kr/learn/courses/30/lessons/250121 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 개요 주어지는 조건에 맞는 데이터들만 골라서, 정렬하는 문제이다. 해시테이블을 이용하면, 원하는 카테고리에 맞는 열 번호를 한번에 알아낼 수 있다. 알고리즘 및 풀이 1. 변수 정의 ans = [] # 조건에 맞는 데이터 저장 n = len(data) dct = { # 기준에 대응하는 (열, 번호) 쌍을 보관하는 해시테이블 "code" : 0, "date" : 1, "maximum" : 2.. 연속된 부분 수열의 합 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 개요 합이 k와 같은 부분수열을 찿는 알고리즘을 설계, 구현하는 것이 목표이다. 투 포인터 알고리즘을 써서 일정한 범위의 부분합을 구해야 한다. 단, 부분합을 구할 때 sum을 쓰면 시간 초과 오류가 발생한다. sum의 시간 복잡도는 O(n) 이다. 투 포인터 알고리즘에서 매번 sum을 사용하여 부분합을 구하면, 시간 복잡도는 최소 O(n^2)으로 늘어난다. 주어지는 데이터의 크기가 최대 .. 이웃한 칸 https://school.programmers.co.kr/learn/courses/30/lessons/250125 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 개요 선택한 칸의 색과 같은 색을 가진 이웃 칸의 개수를 구하는 문제이다. 이웃칸은 선택한 칸의 상/하/좌/우에 위치한 칸들이다. 이웃칸들을 탐색할 때, board의 범위 밖으로 벗어나지 않게 주의해야 한다. 알고리즘 및 풀이 1. 변수 설정 def solution(board, h, w): ans = 0 n, m = len(board), len(board[0]) color = board.. 이전 1 2 3 다음