Bakjoon

    [BOJ/16929번] Two Dots (java) : 깊이우선탐색

    [BOJ/16929번] Two Dots (java) : 깊이우선탐색

    문제 Two Dots는 Playdots, Inc.에서 만든 게임이다. 게임의 기초 단계는 크기가 N×M인 게임판 위에서 진행된다. 각각의 칸은 색이 칠해진 공이 하나씩 있다. 이 게임의 핵심은 같은 색으로 이루어진 사이클을 찾는 것이다. 다음은 위의 게임판에서 만들 수 있는 사이클의 예시이다. 점 k개 d1, d2, ..., dk로 이루어진 사이클의 정의는 아래와 같다. 모든 k개의 점은 서로 다르다. k는 4보다 크거나 같다. 모든 점의 색은 같다. 모든 1 ≤ i ≤ k-1에 대해서, di와 di+1은 인접하다. 또, dk와 d1도 인접해야 한다. 두 점이 인접하다는 것은 각각의 점이 들어있는 칸이 변을 공유한다는 의미이다. 게임판의 상태가 주어졌을 때, 사이클이 존재하는지 아닌지 구해보자. Inpu..

    [BOJ/4963번]섬의개수(java) : DFS

    [BOJ/4963번]섬의개수(java) : DFS

    문제 정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오. 한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. 입력값 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도가 주어진다. 1은 땅, 0은 바다이다. 입력의 마지막 줄에는 0이 두 개 주어진다. Input 1 1 0 2 2 0 1 1 0 3 2 1..

    [백준/17248번] 물리 공부 [2019 전북대학교 프로그래밍 경진대회]

    [백준/17248번] 물리 공부 [2019 전북대학교 프로그래밍 경진대회]

    문제 전북대학교 컴퓨터공학부 신입생인 시현이는 공대 필수 교양인 기초물리를 수강중이다. 공부를 열심히 하는 시현이는 물리 문제집를 풀다가 다음과 같은 문제를 만났다. 평소 물리를 좋아하던 시현이는 ㄱ, ㄴ번은 단숨에 알았지만, ㄷ번을 풀 수 없어 절망에 빠져 있다. 절망에 빠져있는 시현이를 도와주도록 하자. 입력 첫째 줄에 테스트케이스 T를 입력한다. (1 ≤ T ≤ 100) 다음 줄부터 각 테스트케이스마다 자동차 A와 자동차 B의 속력 X, Y, 그리고 자동차 A의 가속도 Z가 주어진다. (각각의 입력은 띄어쓰기로 구분한다.) 단, 0 ≤ X < Y ≤ 10,000이고, 0

    [백준/10219번] Meats On The Grill (Coder's High 2014)[Java]

    [백준/10219번] Meats On The Grill (Coder's High 2014)[Java]

    문제 Coders High 2014가 끝났다. 저녁 회식은 취소되었기 때문에 참가자들은 뿔뿔이 흩어져 저녁식사를 하기 위해 떠났다. 사람들이 모여서 먹는 저녁식사 중에서도 가장 대중적인 것은 고기! Coders High의 출제진들도 고깃집에 와서 고기를 시켰다. 명우는 고기를 구워야 하는 중책을 맡게 되었으므로 불판 위에 고기들을 얹었다. 뛰어난 문제 해결 능력을 가진 명우는 불판 위의 고기를 다음과 같이 모델링하기로 했다. 편의상 불판을 H × W개의 칸으로 이루어진 격자로 나타내기로 하고, 고기는 격자의 여러 칸 위에 걸쳐 있는 것으로 표현한다. 또한 고기가 격자 위에 올라와 있으면, 격자를 가득 채우게 된다고 생각한다. 시간이 지나 현재 아래쪽 면은 적당히 구워졌기 때문에 고기를 뒤집을 시간이 되었..

    [백준/3040번] 백설 공주와 일곱 난쟁이(COCI 2006/2007) [Java]

    [백준/3040번] 백설 공주와 일곱 난쟁이(COCI 2006/2007) [Java]

    문제 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. 어느 날 광산에서 아홉 난쟁이가 돌아왔다. (왜 그리고 어떻게 아홉 난쟁이가 돌아왔는지는 아무도 모른다) 아홉 난쟁이는 각각 자신이 백설공주의 일곱 난쟁이라고 우기고 있다. 백설공주는 이런 일이 생길 것을 대비해서, 난쟁이가 쓰고 다니는 모자에 100보다 작은 양의 정수를 적어 놓았다. 사실 백설 공주는 공주가 되기 전에 매우 유명한 수학자였다. 따라서, 일곱 난쟁이의 모자에 쓰여 있는 숫자의 합이 100이 되도록 적어 놓았다. 아홉 난쟁이의 모자에 쓰여 있는 수가 주어졌을 때, 일곱 난쟁이를 찾는 프로그램을 작..

    [백준/1864번] 문어 숫자(NZPC 2006) [Java]

    [백준/1864번] 문어 숫자(NZPC 2006) [Java]

    문제 해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야에 일대 혁명을 불러왔다. 이 무늬의 정체는 바로 문어가 숫자를 적는 방법이라는 것이 해양 생물학자들에 의해 밝혀진 것이다. 학자들은 문어가 무엇을 세는 것인지는 아직 알 수 없지만, 수 표기법을 해독하는 데에는 성공했다. 뭍 위에 사는 이들에게는 문어가 쓰는 숫자와 그를 표현하는 잔물결 무늬가 매우 낯설 수밖에 없다. 따라서 연구자들은 다음과 같은 기호로 잔물결 무늬를 적기로 합의했다. 각 기호와 대응하는 숫자는 다음과 같다. -는 0에 대응한다. \는 1에 대응한다. (는 2에 대응한다. @는 3에 대응한다. ?는 4에..

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

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

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

    [백준/12354번] Ocean View(Small)(Code Jam for Veterans 2013)[Java]

    [백준/12354번] Ocean View(Small)(Code Jam for Veterans 2013)[Java]

    Problem Ocean View is a small town on the edge of a small lake, populated by people with high self-esteem. There is only one street in this town, Awesome Boulevard, running away from the lake on the west towards the hill in the east. All of the houses in Ocean View are situated along one side of Awesome Boulevard and are numbered starting at #1 on the edge of the lake all the way up to #N at the..

    [백준/17009번] Winning Score  ( CCC 2019 Junior Division)[Java]

    [백준/17009번] Winning Score ( CCC 2019 Junior Division)[Java]

    Problem You record all of the scoring activity at a basketball game. Points are scored by a 3-point shot, a 2-point field goal, or a 1-point free throw. You know the number of each of these types of scoring for the two teams: the Apples and the Bananas. Your job is to determine which team won, or if the game ended in a tie. Input The first three lines of input describe the scoring of the Apples,..

    [백준/13597번] Tri-du( A Primeira Fase da Maratona de Programação 2015) [Java]

    [백준/13597번] Tri-du( A Primeira Fase da Maratona de Programação 2015) [Java]

    Problem Tri-du é um jogo de cartas derivado do popular jogo de Truco. O jogo utiliza um baralho normal de 52 cartas, com treze cartas de cada naipe, mas os naipes são ignorados. Apenas o valor das cartas,considerados como inteiros de 1 a 13, são utilizados. No jogo, cada jogador recebe três cartas. As regras são simples: Um trio (três cartas de mesmo valor) ganha de uma dupla (duas cartas de mes..

    [백준/10093번] 숫자 [Java]

    [백준/10093번] 숫자 [Java]

    문제 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오. 입력 두 정수 A와 B가 주어진다. (1 ≤ A, B ≤ 1015, A와 B의 차이는 최대 100,000) 출력 첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다. 둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다. 풀이 어려운 문제는 아니지만 처음에 실패를 2~3번해서 헤맸던 문제. 우선 제한 조건에 100,000까지 받을 수 있다했으므로 정수값인 int가 아닌 long로 선언해주어야 한다. 그리고 a와 b가 같은경우, a가 b보다 큰경우를 고려해서 반복문을 써주면 완료되는 문제. ㅇㅅㅇ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23..

    [백준/5217번] 쌍의 합 (HSPC 2012) [Java]

    [백준/5217번] 쌍의 합 (HSPC 2012) [Java]

    문제 1보다 크거나 같고 12보다 작거나 같은 자연수가 주어졌을 때, 합이 n이 되는 두 수의 쌍을 찾는 프로그램을 작성하시오. 예를 들어, 5가 주어진 경우 가능한 쌍은 1,4와 2,3이 있다. 두 수는 항상 달라야 한다. 즉, 3,3은 올바른 쌍이 아니다. 또, 첫 번째 숫자가 두 번째 숫자보다 작아야 한다. 출력하는 쌍은 항상 사전순으로 출력해야 한다. 즉, 각 쌍의 작은 숫자로 비교를 해야 한다. 예를 들어 1,5는 2,4보다 사전순으로 앞선다. 입력 첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. 출력 각 테스트 케이스마다 n을 만드는 쌍을 사전순으로 출력한다. n을 만드는 쌍이 없는 경우에는 아무것도 출력하지 않는다. 예제 ..

    [백준/2556번] 별 찍기-14 [Java]

    [백준/2556번] 별 찍기-14 [Java]

    문제 지금까지 안나온 별 찍기가 뭐가 있는지 생각해본 후, 별을 적절히 찍으세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 N개의 줄에 걸쳐 별을 적절히 찍는다. 풀이 처음에 문제를 읽었을 때 무슨 말이지...뭘 하라는거지...싶어서, 다른 사람들은 이해했는 지 궁금했다. 그래서 질문들을 좀 봤는데 역시나 모두 물음표를 수집하고 있었다. 어쨌든 질문들을 토대로 본결과 그냥 입력값만큼의 정사각형을 만들면 통과되는 문제 같았다. 어려운 문제는 아니어서 무리없이 풀 수 있었지만 문제가 도통 이해할 수 없었다. ㅇㅅㅇ 아래는 정답 코드입니다!! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.Scanner; class Bakjoo..

    [백준/ 16787번] マルバツスタンプ(JOI 2019) [Java]

    [백준/ 16787번] マルバツスタンプ(JOI 2019) [Java]

    Problem JOI 君はマルスタンプ,バツスタンプ,マルバツスタンプの3種類のスタンプをそれぞれ 0 個以上持っている.これらはマルやバツのマークを紙に印字することができるスタンプである. マルスタンプを使うとマルが 1 つ印字され,バツスタンプを使うとバツが 1 つ印字される.マルバツスタンプを使うとマルとバツが横一列に 1 つずつ印字され,スタンプの向きを変えることで,マルの右にバツが来るようにも,バツの右にマルが来るようにも印字できる. JOI 君は,持っているスタンプをそれぞれちょうど 1 回ずつ適当な順番で使い,紙に横一列にマルとバツを印字した.印字されたマルとバツの列は文字列 S で表される.S は O と X から構成された長さ N の文字列であり,S_i = O ならば JOI 君が印字したマークのうち左から i 番目のものがマルであることを表し,S_i = X な..

    [백준/1550번] 16진수 [ Java]

    [백준/1550번] 16진수 [ Java]

    문제 16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. 출력 첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다. 예제 입력 1 복사 A 예제 출력 1 복사 10 풀이 정수 변환 함수인 Integer.parseInt()를 이용하면 쉽게 풀수 있다. ㅇㅅㅇ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.*; class Main { public static void main(String[] args) throws Exception..

    [백준/10988번] 팰린드롬인지 확인하기 [Java]

    [백준/10988번] 팰린드롬인지 확인하기 [Java]

    문제 알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. 풀이 문자열을 받은 뒤 중간값을 mid로 선언하고 참인지 판단해주는 flag역할인 sw를 선언, 같으면 1을 반환하고 다르면 0을 반환한다. ㅇㅅㅇ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..

    [백준/4153번] 직각삼각형 [Java]

    [백준/4153번] 직각삼각형 [Java]

    문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. 출력 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. 풀이 직각삼각형에 대한 수학공식인 '피타고라스의 정리'를 이용해서 푸는 문제이다. c^2=a^2+b^2가 그것이다. 위의 문제를 그대로 Math.pow()함수를 이용해서 . c^2=a^2+b^2 로 출력을 했더니 틀렸다...테스트 케이스를 봤을때 a

    [백준/10828번] 스택(Stack) [Java]

    [백준/10828번] 스택(Stack) [Java]

    문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..

    [백준/11399번]  ATM [Java]

    [백준/11399번] ATM [Java]

    문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다..

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

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

    시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 59399 17133 10781 32.021% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 N을 받은 뒤 배열의 길이로 선언해 준다. 이후 배열의 인자값들을 받은뒤 Arrays.sort()함수를 이용하면 끝! ㅇㅅㅇ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 imp..