JAVA - 백준 [BAEK JOON]
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]
2022.09.06https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 문제 기본 조건문만 안다면 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] 체스.. 예전에 진짜 자주 두었었던 게임이다.. 킹 1, 퀸 1, 룩 2, 비숍 2, 나이트 2, 폰 8로 총 16개의 말을 활용하여 상대 말들을 하나씩 따내면서 체크메이트를 만들거나 스테일메이트 등 기본적으로 왕이 움직일 수 없게 만들거나 잡힐 수 밖에 없는 상황을 만들어 이기면 된다. 아무튼.. 위 본문에도 나와있듯 각 체스말들의 개수는 고..
[백준] 2480번 : 주사위 세개 - JAVA [자바]
[백준] 2480번 : 주사위 세개 - JAVA [자바]
2022.08.04https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 3개의 변수 비교를 하는 방법에 관한 문제다. 자바에서는 다중비교도 가능하기 때문에 쉽게 풀이할 수 있을 것이다. 알고리즘 [접근 방법] 위 문제에서 가장 중요한 것은 결국 세 개의 변수 비교다. 그 변수들에 따라 같은 것이 존재할 경우 같은 변수가 무엇인지를 찾고, 같은 변수가 두 개인지, 세 개인지를 판단해야한다. 또는 모두 다를 경우 세 개의 변수 중 가장 큰 것을 찾는 ..
[백준] 2525번 : 오븐 시계 - JAVA [자바]
[백준] 2525번 : 오븐 시계 - JAVA [자바]
2022.07.22https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제 직전 문제인 알람 시계(2884번)와 거의 유사한 문제라 해당 문제를 풀었다면 어렵지 않게 풀 수 있었으리라 본다. 만약 아직 풀지 않으셨다면 해당 문제를 먼저 보고오시는 것을 추천드린다. 알고리즘 [접근 방법] 이 번 문제는 알람 시계 문제의 반대라고 보시면 된다. 알람 시계 문제에서는 주어진 시간에서 45분을 뺐어야 했다면 이 문제에선 사용자 입력에 따라 C분을 더해야 한다...
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! - JAVA [자바]
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! - JAVA [자바]
2022.06.21https://www.acmicpc.net/problem/18108 18108번: 1998년생인 내가 태국에서는 2541년생?! ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국 www.acmicpc.net 문제 간단한 수리 추론 문제다! 알고리즘 [접근 방법] 문제 자체는 어렵지 않게 풀었으리라 본다. 그래도 설명하자면, 불기 연도가 주어질 때 이를 서기 연도로 바꾸어 출력하라는 것이다. 그럼 불기를 어떻게 알고 서기로 바꾸어야 할까? 문제속에 답이 있듯, 1998년생(서기)의 경우 불기로는 2541년생이라는 것이다. 즉, 서기와 불기는 5..
[백준] 10926번 : ??! - JAVA [자바]
[백준] 10926번 : ??! - JAVA [자바]
2022.06.17https://www.acmicpc.net/problem/10926 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때 www.acmicpc.net 문제 워낙 쉬운문제라 설명 할 것은 따로 없을 것이다. 알고리즘 [접근 방법] 문제는 어렵지는 않다. 결국 입력받은 문자열에 ??! 라는 문자열을 덧붙여 출력하기만 하면 되기에 문제가 되지는 않는다. 특히나 자바에서는 문자열 연산과 String타입의 출력연산이 매우 편리하기 때문에 바로 소스코드를 보면서 소개하겠다. 2가지 방법을 사용하여 풀이한다. 이전 포스팅과 여타 다를 바 없이 아래와 같이 ..
[백준] 25083번 : 새싹 - JAVA [자바]
[백준] 25083번 : 새싹 - JAVA [자바]
2022.05.07https://www.acmicpc.net/problem/25083 25083번: 새싹 아래 예제와 같이 새싹을 출력하시오. www.acmicpc.net 문제 알고리즘 [접근 방법] 이 번 문제도 단순 출력문제다. 다만, 제어 문자(이스케이프 시퀀스)에 대해 이해를 하고 있어야 한다. 해당 부분에 대한 얘기는 아래 글에서 다루고 있으니 이 부분을 참고하여 풀이하시기를 바란다. https://st-lab.tistory.com/11
[백준] 12015번 : 가장 긴 증가하는 부분 수열 2 - JAVA [자바]
[백준] 12015번 : 가장 긴 증가하는 부분 수열 2 - JAVA [자바]
2022.04.25https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 알고리즘 [접근 방법] 이 문제를 풀기 전에 가장 긴 증가하는 부분 수열(LIS)에 대해 모르고 있다면, 아래 문제를 먼저 풀면서 접해보는 것을 권장한다. https://st-lab.tistory.com/137 [백준] 11053번 : 가장 긴 증가하는 부분 수열 - JAVA [자바] www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 ..
[백준] 1300번 : K번째 수 - JAVA [자바]
[백준] 1300번 : K번째 수 - JAVA [자바]
2021.12.27https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 문제 알고리즘 [접근 방법] 필자도 이 번 문제는 접근 방법을 이해하는데 조금 애를 먹은 문제다. 혹여나 필자가 포스팅 하는데, 잘못 접근하진 않았을까 검색도 해보았지만 생각보다 한 번에 이해가 팍 되는 글은 개인적으로 없는 것 같았다. 그래서 최대한 쉽게 풀이하여 이해 할 수 있도록 최대한 노력해보겠다. 일단, 이분 탐색으로 접근한다는 생각은 잠시 뒤로하고 문제부터..
[백준] 18870번 : 좌표 압축 - JAVA [자바]
[백준] 18870번 : 좌표 압축 - JAVA [자바]
2021.12.11https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제 이 번엔 단계별 풀이가 아닌 다른 문제를 한 번 풀어보려 한다. 알고보니 정렬 파트에 추가된 문제였다.. 알고리즘 [접근 방법] 위 문제를 보니 좌표 압축이라고는 되어있긴 하지만, 정확히는 좌표 압축 알고리즘을 활용한 ranking list를 만드는 문제라고 보는 것이 좀 더 직관적이지 않나.. 생각을 한다. 여튼, 위와 같은 문제 부류를 c..
[백준] 2110번 : 공유기 설치 - JAVA [자바]
[백준] 2110번 : 공유기 설치 - JAVA [자바]
2021.12.08https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 문제를 정확히 파악만 한다면 매우 쉬운 문제다. 알고리즘 [접근 방법] 그동안 숫자 카드, 랜선 자르기, 나무 자르기를 순서대로 풀어왔다면, 이 번 문제는 그리 어렵지는 않았을 것이다. 그럼에도 정답률이 낮은 이유라 한다면, 아마 이분탐색 구현을 제대로 하지 않았기 때문일 가능성이 매우 높지 않을까 생각을 해본다만.. 그렇기 때문에 필자가 ..