프로그래머스에 존재하는 연습 문제이다. 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 미로크기 n, m 시작 좌표 x, y 목적 좌표 r, c 이동 거리 k가 주어진다. 이동 방향은 상하좌우 4방향이며, 이동하는 경우 각각 u, d, l, r 명령어를 사용하게 된다. 시작 좌표로부터 도착 좌표까지 주어진 k의 이동거리는 일치해야 한다. 이때 이동하는 명령어가 사전순으로 가장 빠른 명령어가 될 경우를 반환하는 문제이다. ..
프로그래머스에 존재하는 연습 문제이다. 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 50 x 50 셀을 가진 표에 대해서 UPDATE, MERGE, UNMERGE, PRINT를 수행하고 PRINT 명령을 수행했을 때의 결과를 반환하는 문제이다. 주어진 조건을 잘 읽어가면 구현을 하면 되는 문제이다! 문제 풀이 주어진 조건을 잘 읽어가며 천천히 구현한다면 쉽게 풀 수 있는 문제이다. 영역을 합치는 머지와 초기화 하는 언..
프로그래머스에 존재하는 연습 문제이다. 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 이진트리가 주어진다. 이를 이진 포화트리로 바꾸었을 때 더미노드는 0, 존재하는 노드는 1로 가정하여 왼쪽부터 읽어 2진수로 변경할 수 있다. 이때 문제에서 숫자가 주어졌을 때 해당 숫자를 이진트리로 표현할 수 있는지 판단하는 문제이다. 문제 풀이 1. 자릿수 변경 먼저 이 문제를 해결하기 위해서 주어진 수를 이진수로 변경한 뒤, 이진..
프로그래머스 연습문제에 존재하는 카카오 코딩테스트에 출제되었던 문제이다. 원본 문제 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 현재 날짜, 약관 종류, 약관 유효기간, 약관 수집 날짜, 수집한 약관 종류가 주어진다. 약관 유효기간이 지나 파기해야할 정보를 구하는 문제이다. 문제 풀이 기본적으로 공백이나 온점을 기반으로 나누어 데이터를 다듬고 해결하는 문제이다. 모든 달의 날짜를 28일로 제한하기 때문에 쉽게 날짜로 변환할 수 ..
https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 테이블과 col, row_begin, row_end가 주어진다. 해당 변수들을 이용해 주어진 규칙에 따라 생성되는 해시함수를 구현하면 되는 문제이다. 문제 풀이 1. col번째 컬럼값 기준으로 오름차순 정렬을 한다. 이때 첫번째 컬럼값은 기본키이다. 기본키는 중복된 값을 갖지 않으며, col번째 컬럼값 기준으로 오름차순 정렬할 때 중복된 값이 존재하면 첫번째 컬럼값 기준으로 내림차순 ..
https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 엘레베이터가 존재하고, 민수는 주어진 storey층에 있다. 엘레베이터는 +1, -1, +10, -10, +100, -100, ... 10^c 단위로 움직일 수 있다. 엘레베이터는 지하의 층으로 갈 수 없다. 이때 가장 최소로 움직이도록 하는 값을 구하는 문제이다. 문제 풀이 문제를 보고 딱 떠오른 방법은 그리디하게 푸는 방법이였다. 1의 자리의 수부터 확인해 나가며 1에서 10이 되..
문제 프로그래머스 lv2. 이모티콘 할인행사 원본 문제 주소: https://school.programmers.co.kr/learn/courses/30/lessons/150368 문제 해석 이모티콘 사용자의 구매기준 할인율과 이모티콘 플러스 가입기준 금액이 주어진다. 이모티콘의 가격들이 주어진다. 이모티콘 플러스 가입율을 최대화 하고 판매 금액을 최대화할 때의 가입자 수와 판매 금액을 구하는 문제 문제 풀이 할인율은 4가지 경우이고, 이모티콘의 종류는 최대 7개이므로 완전 탐색을 통해 구할 수 있다. 먼저 이모티콘 별 할인율 경우의 수를 모두 구한다. 이후 해당 경우의 수에 따라 가입자, 판매금액을 모두 구한 뒤 해당 값들을 갱신해 주면 된다. 문제 코드 def solution(users, emotico..
https://school.programmers.co.kr/learn/courses/30/lessons/150369 문제 해석 거리가 1 ~ n + 1에 각각 집이 존재한다. 택배 상자를 담을 수 있는 최대 값이 정해진다. 해당 집에 배달할 박스와 수거할 박스가 주어진다. 배달할 박스와 수거할 박스를 모두 가져올 최소의 거리를 구하는 문제이다. 문제 풀이 최소의 경로를 도달하기 위해서는 가장 먼 집의 경우부터 해결해 주어야한다. 가장 먼 집부터 탐색하면 배달할 박스와 수거할 박스를 구분할 필요가 없다. 따라서 그리디하게 문제를 해결할 수 있다. > 실패한 방법 (시간 초과) 처음에는 가장 먼 집부터 차례로 cap 값만큼 줄이고, 남은 상자를 추가로 다음 도달할 집에 줄여가며 구현을 했다. 하지만 n^2의..
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 문제 해석 2048 게임 시스템을 구현해서 5번 이동할 때 최대가 되는 값을 구하는 문제 코드 1. 제출 n = int(input()) arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) def turn(current_arr): size = len(current_arr) temp_arr = [..
https://www.acmicpc.net/problem/1967\ 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 노드에서 노드까지 가장 먼 거리를 찾는 문제. 코드 1. 제출 from collections import deque n = int(input()) adj = [[] for _ in range(n + 1)] for _ in range(n - 1): a, b, c = map(int, input().split()) adj[a].append((b, ..