알고리즘

    [백준/2751번] 수 정렬하기 2 [Java]

    [백준/2751번] 수 정렬하기 2 [Java]

    문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 단순 정렬 문제. 하지만 시간초과가 있어서 애를 먹었다. 정렬을 이용해서 풀어야할 것같은데, 귀찮아서 처음에는 Array를 선언, Arrays.sort를 사용해서 풀어줫는데 시간초과가 나서 List를 이용해, Collections.sort를 사용해보았다. 이건 통과. Array보다 List가 더 빠르다는 것을 알 수 있었던 문제였다..

    [백준/18229번]내가 살게, 아냐 내가 살게(인천대 INU 송년 코드페스티벌 2019) [Java]

    [백준/18229번]내가 살게, 아냐 내가 살게(인천대 INU 송년 코드페스티벌 2019) [Java]

    문제 N명이 서로 결제하겠다며 카드를 내밀고 있다. 사람들과 점원의 거리는 K이다. 처음으로 손을 K이상 뻗은 사람은 결제하게 되는 영예를 얻는다. 사람들은 다음과 같은 과정으로 손을 뻗는다. 1번 사람이 손을 A1,1만큼 뻗는다. → 2번 사람이 손을 A2,1만큼 뻗는다. → 3번 사람이 손을 A3,1만큼 뻗는다. → ...... → N번 사람이 손을 AN,1만큼 뻗는다. → 1번 사람이 손을 A1,2만큼 추가로 뻗는다. → 2번 사람이 손을 A2,2만큼 추가로 뻗는다. → ...... → N번 사람이 손을 AN,M만큼 추가로 뻗는다. 여기서 A는 2차원 배열의 형태로 입력으로 주어진다. 다시 말해, 1번부터 N번 사람까지 순서대로 손을 뻗는 것을 M번 반복하며, 각 순서에서 손을 뻗는 정도는 입력으로..

    [백준/18228번] 펭귄추락대책위원회(인천대 INU 송년 코드페스티벌 2019)[Java]

    [백준/18228번] 펭귄추락대책위원회(인천대 INU 송년 코드페스티벌 2019)[Java]

    문제 일우는 친구들과 펭귄 얼음깨기 게임을 하고 있다. 계속 떨어지는 펭귄이 불쌍했던 일우는 INU 송년 코드페스티벌 참가자들을 펭귄추락대책위원회로 초대했다. 이 펭귄 얼음깨기는 리메이크 된 버전으로, N개의 얼음이 1부터 N까지 번호가 매겨져 있다. 게임은 얼음 1부터 N까지 순서대로 일렬로 나열된 공간에서 진행된다. 게임 시작 시, 펭귄 한 마리가 임의의 얼음 K위에 위치한다. 참가자는 몇 개의 얼음을 깨뜨려서 펭귄을 떨어뜨리는 것이 목적이다. 단, 펭귄이 밟고 있는 얼음은 깨뜨릴 수 없다. 각 얼음은 서로 다른 강도를 가지고 있어서 얼음 i(1 ≤ i ≤ N)를 깨뜨리는 데에 Ai만큼의 힘이 필요하다. 양옆으로 인접해 있는 얼음들을 하나의 그룹으로 봤을 때, 그룹의 끝이 얼음1 또는 N을 포함하지 ..

    [백준/10250번] ACM호텔(Daejeon Nationalwide Internet Competition 2014 ) [Java]

    [백준/10250번] ACM호텔(Daejeon Nationalwide Internet Competition 2014 ) [Java]

    문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모..

    [백준/10773번] 제로(CCC 2015 Senior Division) [Java]

    [백준/10773번] 제로(CCC 2015 Senior Division) [Java]

    문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할..

    [백준/17173번] 배수들의 합(충남대 3회 생각하는 프로그래밍 대회)[Java]

    [백준/17173번] 배수들의 합(충남대 3회 생각하는 프로그래밍 대회)[Java]

    문제 신원이는 백준에서 배수에 관한 문제를 풀다가 감명을 받아 새로운 문제를 만들어보았다. 자연수 N과 M개의 자연수 Ki가 주어진다. Ki중 적어도 하나의 배수이면서 1 이상 N 이하인 수의 합을 구하여라. 입력 첫 번째 줄에 N과 M가 주어진다. (2 ≤ N ≤ 1000, 1 ≤ M < N) 그다음 줄에 M개의 정수 Ki가 주어진다. (2 ≤ Ki ≤ 1000) 동일한 Ki는 주어지지 않으며, 오름차순으로 정렬되어있다. 출력 배수들의 합을 출력한다. 풀이 정수 N을 선언받은 뒤 1부터 N까지의 수 중 따로 선언받은 M개의 정수 K에 나누어 떨어지는 수의 총합을 구하는 문제이다. 예를들어 N=10 M=2일때 K를 2와 3을 입력 받았다면 1~10중 2와 3으로 나누어떨어지는 수만을 더하면 42가 도출된..

    [백준/17530번] Buffon(Maratona de Programação SBC 2019)[Java]

    [백준/17530번] Buffon(Maratona de Programação SBC 2019)[Java]

    Problem The Kingdom of Matchings is governed by a generous commander. The commander’s fame and great qualities are known to all, including neighboring kingdoms. One of his most famous qualities is his good humor, which is nourished daily by a court buffoon, elected annually at the Great Comedy Contest (GCC) of the kingdom. The court buffoon helps to relieve all the tension of the various politic..

    [백준/15740번] A+B - 9 [Java]

    [백준/15740번] A+B - 9 [Java]

    문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B (-1010000 ≤ A, B ≤ 1010000)가 주어진다. 출력 첫째 줄에 A+B를 출력한다. 서브태스크 1 (5점) 0 ≤ A, B ≤ 10 서브태스크 2 (10점) -100 ≤ A, B ≤ 100 서브태스크 3 (10점) 0 ≤ A, B ≤ 109 서브태스크 4 (15점) -109 ≤ A, B ≤ 109 서브태스크 5 (15점) 0 ≤ A, B ≤ 260 서브태스크 6 (20점) -260 ≤ A, B ≤ 260 서브태스크 7 (20점) 0 ≤ A, B ≤ 1010000 서브태스크 8 (5점) -1010000 ≤ A, B ≤ 1010000 풀이 처음에 단순 계산 문제인 줄 알고 당연하게 int..

    [백준/5533번] 유니크(JOI 2013)[Java]

    [백준/5533번] 유니크(JOI 2013)[Java]

    문제 상근이와 친구들은 MT에 가서 아래 설명과 같이 재미있는 게임을 할 것이다. 각 플레이어는 1이상 100 이하의 정수를 카드에 적어 제출한다. 각 플레이어는 자신과 같은 수를 쓴 사람이 없다면, 자신이 쓴 수와 같은 점수를 얻는다. 만약, 같은 수를 쓴 다른 사람이 있는 경우에는 점수를 얻을 수 없다. 상근이와 친구들은 이 게임을 3번 했다. 각 플레이어가 각각 쓴 수가 주어졌을 때, 3번 게임에서 얻은 총 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 참가자의 수 N이 주어진다. (2 ≤ N ≤ 200) 둘째 줄부터 N개 줄에는 각 플레이어가 1번째, 2번째, 3번째 게임에서 쓴 수가 공백으로 구분되어 주어진다. 출력 각 플레이어가 3번의 게임에서 얻은 총 점수를 입력으로 주어진 순서대로 ..

    [백준/15803번] PLAYERJINAH’S BOTTLEGROUNDS (2018 SCCC Programming Contest)[Java]

    [백준/15803번] PLAYERJINAH’S BOTTLEGROUNDS (2018 SCCC Programming Contest)[Java]

    문제 한때 굉장히 유행하고 유명했던 게임, PLAYERJINAH’S BOTTLEGROUNDS는 FPS(First-Person Shooter) 장르의 게임이다. 전 세계적으로 많은 사람을 열광시킨 이 게임은 영화 Bottle Royale 을 모티브로 만들어졌다. 영화 Bottle Royale 에서는 한 학급의 학생들을 한 섬에 가두고, 그들에게 각자 병을 지급한 뒤, 단 한 명의 승자가 남을 때까지 서로 병 던지기를 시키는 내용이 나온다. 이 게임은 그와 비슷하게 100명의 플레이어가 각자 거대한 수송기에서 낙하산으로 낙하하여 한 명의 승자가 남을 때까지 진행된다. 이 게임을 즐기는 진아는 굉장한 실력의 게이머로서, 그녀의 실력은 화면 속의 적을 동시에 3명까지 맞춰 쓰러뜨릴 정도로 잘한다. 대신에 그녀가..

    [백준/2676번] 라스칼 삼각형(2011 Greater New York Programming Contest )[Java]

    [백준/2676번] 라스칼 삼각형(2011 Greater New York Programming Contest )[Java]

    문제 라스칼의 삼각형은 파스칼의 삼각형과 비슷하다. 라스칼의 삼각형에서 가장 윗 줄은 0번 줄이다. i번째 줄에는 i+1개의 숫자가 들어있고, 차례대로 0번부터 i번이다. R(i,j)는 i번 줄의 j번째 숫자이다. R(n,m) = 0 (n

    045 - Accumulator Method Practice 1

    045 - Accumulator Method Practice 1

    Write a method header on line two with the following specs: Returns: an integer Name: sumToX Parameters: an integer called "x" Purpose: calculate the sum of the integers from 1 to x (including x) Examples: sumToX(5) ==> 15 sumToX(7) ==> 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.*; class Main { public static int sumToX(int x) { int sum=0; for(int i=1;i

    043 - Method Header Practice 8

    043 - Method Header Practice 8

    Write a method header on line two with the following specs: Returns: a String Name: makeThreeSubstr Parameters: a String called "word" an integer called "startIndex" an integer called "endIndex" Then, starting on line 4, write code that will return 3x the substring (no spaces) from "startIndex" to "endIndex" Examples: makeThreeSubstr("hello",0,2) ==> "hehehe" makeThreeSubstr("shenanigans",3,7) =..

    042 - Method Header Practice 7

    042 - Method Header Practice 7

    Write a method header on line two with the following specs: Returns: a char Name: getChar Parameters: a String called "word" an integer called "index" Then, starting on line 4, write code that will return the character in "word" at the index "index" Examples: getChar("hello",1) ==> 'e' 1 2 3 4 5 6 7 8 9 10 11 12 import java.util.*; class Main { public static char getChar(String word, int index) ..

    041 - Method Header Practice 6

    041 - Method Header Practice 6

    Write a method header on line two with the following specs: Returns: a boolean Name: bothEven Parameters: an integer called "num1" an integer called "num2" Then, starting on line 4, write code that will return true if both num1 and num2 are even. Return false otherwise. Examples: bothEven(4,6) ==> true bothEven(3,4) ==> false bothEven(-1,1) ==> false 1 2 3 4 5 6 7 8 9 10 11 12 13 import java.uti..

    039 - Method Header Practice 4

    039 - Method Header Practice 4

    Write a method header on line two with the following specs: Returns: an integer Name: addTwo Parameters: An integer called "x" An integer called "y" You should not be writing code on any line other than #2 1 2 3 4 5 6 7 8 9 10 11 12 import java.util.*; class Main { public static int addTwo(int x,int y){ return x+y; } //test case below (dont change): public static void main(String[] args){ System..

    [백준/7326번] Number Steps (Tehran Site 2000)[Java]

    [백준/7326번] Number Steps (Tehran Site 2000)[Java]

    문제 Starting from point (0,0) on a plane, we have written all non-negative integers 0,1,2,... as shown in the figure. For example, 1, 2, and 3 has been written at points (1,1), (2,0), and (3,1) respectively and this pattern has continued. You are to write a program that reads the coordinates of a point (x, y), and writes the number (if any) that has been written at that point. (x, y) coordinates ..

    [백준/10709번] 기상캐스터(JOI 2015)[Java]

    [백준/10709번] 기상캐스터(JOI 2015)[Java]

    문제 JOI시는 남북방향이 H 킬로미터, 동서방향이 W 킬로미터인 직사각형 모양이다. JOI시는 가로와 세로의 길이가 1킬로미터인 H × W 개의 작은 구역들로 나뉘어 있다. 북쪽으로부터 i 번째, 서쪽으로부터 j 번째에 있는 구역을 (i, j) 로 표시한다. 각 구역의 하늘에는 구름이 있을 수도, 없을 수도 있다. 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽으로 이동한다. 오늘은 날씨가 정말 좋기 때문에 JOI시의 외부에서 구름이 이동해 오는 경우는 없다. 지금 각 구역의 하늘에 구름이 있는지 없는지를 알고 있다. 기상청에서 일하고 있는 여러분은 각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 예측하는 일을 맡았다. 각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오..

    [백준/2822번] 점수 계산(COCI 2011/2012) [Java]

    [백준/2822번] 점수 계산(COCI 2011/2012) [Java]

    문제 상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다. 상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오. 입력 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다. 출력 첫째 줄에..

    [백준/2525번] 오븐 시계(한국정보올림피아드)[Java]

    [백준/2525번] 오븐 시계(한국정보올림피아드)[Java]

    문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0