스파르타 알고리즘 트랙 문제(백준) (18) 썸네일형 리스트형 스파르타 알고리즘 트랙 문제 3일차 - 3 #10773 제로 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 해결 과정 0인 입력이 들어올 때마다 가장 최근 값을 없애는 LIFO 형식의 자료 구조가 필요하다. 따라서 터렛 문제에서 사용했던 Stack을 사용해야 한다는 것을 알 수 있다. Stack을 사용해야 한다는 것을 알았다면 구현은 간단하다. 입력으로 0을 받았다면 기존에 숫자를 저장해 두었던 Stack에서 값을 .. 스파르타 알고리즘 트랙 문제 3일차 - 2 #10828 스택 문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 해결 과정 Stack 자료형을 활용해 주어진 입력을 구현하고 필요할 경우 출력까지 하는 코드이다. Stack 자료형을 사용한다면 크게 어려운 문제는 아니다. 전부 해당 자료형 안에 구현되.. 스파르타 알고리즘 트랙 문제 3일차 - 1 #1002 터렛 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 해결 과정 두 원의 접점의 갯수를 구하는 방법을 알면 어려운 문제는 아니다. 접점의 갯수를 구하는 방법은 아래와 같다. 두 원의 중심 사이의 거리를 d, 각 원의 반지름을 각 r1, r2라 하였을 때, d =.. 스파르타 알고리즘 트랙 문제 2일차 - 4 #1011 Fly me to the Alpha Centauri 문제 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 .. 스파르타 알고리즘 트랙 문제 2일차 - 3 #1110 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 해결 과정 .. 스파르타 알고리즘 트랙 문제 2일차 - 2 #1929 소수 구하기 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 해결 과정 1일차의 베르트랑 공준 문제와 비슷한 문제이다. 다른 점은, 입력이 2개를 받고 n -> 2n이 M -> N으로 변경되었고, 소수의 갯수를 출력에서 소수를 직접 출력으로 변경되었다. 베르트랑 공준 문제의 정답 코드를 가져와서 이 문제에 맞게 수정하였다. import java.util.Scanner; import static java.lang.Math.sqrt; public class Main { public static void main(String[] args) { int check = 0; Scanner a = new Scanner(System.in); int M = a.nextInt(); int N = a.nextInt().. 스파르타 알고리즘 트랙 문제 2일차 - 1 #10250 ACM 호텔 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모.. 스파르타 알고리즘 트랙 문제 1일차 - 3 #2869 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 해결 과정 처음에는 단순하게 답이 나올 때까지 반복문을 사용해 계산하는 코드로 작성하였다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { int ans = 0; Scanner a = new Scanner(System.in); int up .. 이전 1 2 3 다음