문제 우리의 목적은 이 집터 내의 땅의 높이를 일정하게 바꾸는 것이다. 좌표 (i, j)의 가장 위에 있는 블록을 제거하여 인벤토리에 넣는다. 인벤토리에서 블록 하나를 꺼내어 좌표 (i, j)의 가장 위에 있는 블록 위에 놓는다 1번 작업은 2초가 걸리며, 2번 작업은 1초가 걸린다. ‘땅 고르기’ 작업에 걸리는 최소 시간과 그 경우 땅의 높이를 출력하시오. ✅ 작업을 시작할 때 인벤토리에는 B개의 블록이 들어 있다. 땅의 높이는 256블록을 초과할 수 없으며, 음수가 될 수 없다. 입력 첫째 줄: N, M, B 둘째 줄: N개의 줄에 각각 M개의 정수로 땅의 높이가 주어진다. 땅의 높이 = ( 256보다 작거나 같은 자연수 or 0 ) 출력 땅을 고르는 데 걸리는 시간과 땅의 높이 출력( 답이 여러 개..
코딩테스트
2024.03.13 하나금융 코딩테스트 시험 시간은 10:30 ~ 13:00 로 2시간 30분 가량 치뤘고 알고리즘 3문제, SQL 3문제였습니다. 다른 블로그 참고했을 때 알고리즘으로는 그리디와 구현이 나왔다고 했었는데 이번 시험도 비슷했습니다! 그리디 알고리즘 그래프 문제 구현 문제 조건이 다른 항목 집계 JOIN 3개 이상의 JOIN 엘리스 코딩 환경에서 수행됐고, 난이도 자체는 높지는 않았으나 제가 잘 봤는지는 모르겠습니다 : ) SQL 문제에 있어서는 format을 지정하는 함수까지 잘 알면 좋다고 생각했습니다. 문제에 대해 더 자세한 사항은 유출하면 안 되므로 이 정도 기록하겠습니당 좋은 소식 가지고 올 수 있으면 좋겠네요
문제 양수와 +, -, 그리고 괄호를 가지고 식을 만든 후, 다시 괄호를 지웠다. 다시 괄호를 쳐서 값을 최소로 만드는 문제이다. 입력 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어진 식(처음과 마지막은 숫자) 출력 최솟값 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net ★Keypoint : 그리디 알고리즘 , sys 그리디 알고리즘을 사용하면, 각 '+' 연산 이후에 나오는 수는 '-'로 빼주면서 최소값을 만들 수 있다 EX) 입력..
문제 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작 입력 첫째 줄: 연산의 개수 N(1 ≤ N ≤ 100,000) N개의 줄 : 연산에 대한 정보를 나타내는 정수 x 출력 입력에서 0이 주어진 횟수만큼 답을 출력( 입력이 0이면 가장 큰 값 출력, 자연수라면 heap에 해당 원소 추가)만약 배열이 비어 있는 경우인데 가장 큰 값을 출력하라고 한 경우에는 0을 출력 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정..
문제 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램 작성하기 입력 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. (각 종은 30글자 이내 & 입력되는 종 개수
문제 길이 M의 수열 C를 가져와서 수열의 원소를 앞에서부터 차례대로 queuestack에 삽입할 것이다. 이전에 삽입한 결과는 남아 있다. queuestack에 넣을 원소들이 주어졌을 때, 해당 원소를 넣은 리턴값을 출력하는 프로그램을 작성 queuestack 작동 원리 x0을 입력받는다. x0을 1번 자료구조에 삽입한 뒤 1번 자료구조에서 원소를 pop한다. 그때 pop된 원소를 x1이라 한다. x1 을 2번 자료구조에 삽입한 뒤 2번 자료구조에서 원소를 pop한다. 그때 pop된 원소를 x2이라 한다. ... x{N-1}을 N번 자료구조에 삽입한 뒤 N번 자료구조에서 원소를 pop한다. 그때 pop된 원소를 xN이라 한다. 입력 첫째 줄 : queuestack을 구성하는 자료구조의 개수 N 둘째 줄..
문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 push X: 정수 X를 큐에 넣는 연산 pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 size: 큐에 들어있는 정수의 개수를 출력 empty: 큐가 비어있으면 1, 아니면 0을 출력 front: 큐의 가장 앞에 있는 정수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 back: 큐의 가장 뒤에 있는 정수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 입력 첫째 줄: 명령의 수 N (1 ≤ N ≤ 2,000,000) 둘째 줄부터 N개의 줄 : 한 명령 ( 1 ≤ 주어지는 정수 ≤ 100, 000 ) 출력 명령을 수행한 결..
문제 크기가 N×N인 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나. 도시의 칸은 (r, c)와 같은 형태로 나타낸다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리. 치킨 거리는 집을 기준으로 정해지며, 도시의 치킨 거리는 모든 집의 치킨 거리의 합 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 도시에 있는 치킨집 중에서 최대 M개를 고르고, 나머지 치킨집은 모두 폐업시켜야 한다. 어떻게 고르면, 도시의 치킨 거리가 가장 작게 될지 구하는 프로그램을 작성 입력 첫째 줄 : 도시 크기 N(2 ≤ N ≤ 50)과 치킨집 개수 M(1 ≤ M ≤ 13) 둘째 줄부터 N개의 줄 : 도시의 정보( 0 : 빈 칸, 1 : 집, 2 : 치킨 집) 출력 폐..
문제 입력으로 주어진 괄호 문자열이 올바른 괄호 문자열(Valid PS, VPS)인지 해당 여부 확인 입력 첫째 줄: 입력 데이터의 수를 나타내는 정수 T T개의 줄: 괄호 문자열 (2 이상 50 이하) 출력 올바른 괄호 문자열(VPS)이면 “YES”, 아니면 “NO”를 한 줄에 하나씩 차례대로 출력 ★Key Point : 스택 n = int(input()) for _ in range(n): list = input() left = 0; #왼괄호 right = 0; #오른괄호 for i in list: if i == '(': left += 1 else: right += 1 print('NO' if left != right else 'YES') 괄호의 개수 비교만 하면 해결할 수 있을 거라고 생각했지만, 다..
문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 입력 첫째 줄: 단어의 개수 N 둘째 줄부터 N개의 줄 : 단어( 알파벳 소문자, 중복 X, 최대 길이 100) 출력 그룹 단어의 개수 ★Keypoint : 리스트 인덱싱, in문 파이썬의 in문을 사용하면 짧게 가능한 문제! n = int(input()) count = n # 모두가 다 그룹 단어일 때 최대 그룹단어 개수 for _ in range(n): word = input() for ..