구현

· Algorithms
문제 우리의 목적은 이 집터 내의 땅의 높이를 일정하게 바꾸는 것이다. 좌표 (i, j)의 가장 위에 있는 블록을 제거하여 인벤토리에 넣는다. 인벤토리에서 블록 하나를 꺼내어 좌표 (i, j)의 가장 위에 있는 블록 위에 놓는다 1번 작업은 2초가 걸리며, 2번 작업은 1초가 걸린다. ‘땅 고르기’ 작업에 걸리는 최소 시간과 그 경우 땅의 높이를 출력하시오. ✅ 작업을 시작할 때 인벤토리에는 B개의 블록이 들어 있다. 땅의 높이는 256블록을 초과할 수 없으며, 음수가 될 수 없다. 입력 첫째 줄: N, M, B 둘째 줄: N개의 줄에 각각 M개의 정수로 땅의 높이가 주어진다. 땅의 높이 = ( 256보다 작거나 같은 자연수 or 0 ) 출력 땅을 고르는 데 걸리는 시간과 땅의 높이 출력( 답이 여러 개..
· Algorithms
문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 push X: 정수 X를 큐에 넣는 연산 pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 size: 큐에 들어있는 정수의 개수를 출력 empty: 큐가 비어있으면 1, 아니면 0을 출력 front: 큐의 가장 앞에 있는 정수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 back: 큐의 가장 뒤에 있는 정수를 출력. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력 입력 첫째 줄: 명령의 수 N (1 ≤ N ≤ 2,000,000) 둘째 줄부터 N개의 줄 : 한 명령 ( 1 ≤ 주어지는 정수 ≤ 100, 000 ) 출력 명령을 수행한 결..
· Algorithms
문제 크기가 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 : 치킨 집) 출력 폐..
· Algorithms
문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, 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 ..
· Algorithms
문제 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산 : 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪힐 때 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉,..
· Algorithms
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄: 수의 개수 N과 합을 구해야 하는 횟수 M 둘째 줄: N개의 수 셋째 줄부터 M개의 줄 : 합을 구해야 하는 구간 i와 j 출력 총 M개의 줄에 i번째 수부터 j번째 수까지 합을 출력 ★Key point : 누적합 알고리즘 사용하기 각 구간 입력마다 for문을 돌려서 합을 구하면 런타임 에러가 나기 때문! 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { // j) ..
유영서
'구현' 태그의 글 목록