목록BOJ (78)
Jun's Development Journey
문제 www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 1) 비효율적 코드(1776ms) import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; import java.util.StringTokenizer; imp..
문제 www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; import java.util.StringTokenizer; import java.util.Map.*; public cl..
문제 www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 풀이 - 풀이 중점 - 1) 정렬부터 한다. 2) front와 rear가 가리키는 값의 합의 절대값과 min 값을 비교하고, min 및 left, right 값을 갱신한다. 3) front + rear 값이 양수이면(rear값의 절대값이 더 큰 경우) 값을 줄여야 하니 rear값을 감소, 음수이면(rear 절대값이 더 작은 경우, 즉 둘 다 음수 인 경우) front를 증..
문제 www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 풀이 - 풀이 중점 - 1) 주어진 숫자를 char 형 배열로 변형 및 순열을 사용하여 모든 경우의 수를 구했다. 2) 숫자의 길이를 알기 때문에 Math.pow() 함수를 이용하여 숫자를 생성했다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import jav..
문제 www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 풀이 - 중요한 점- 1) K는 반드시 포함 되어야 하는 5 알파벳 수(a,c,i,n,t)의 갯수보다 작으면 단어를 배울 수가 없다. 2) 단어에 반드시 포함되는 앞뒤에 쓰이는 알파벳은 미리 체크해놓고 문자열을 가운데만 잘라서 이용한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamRea..
문제 www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 풀이 중요한점 1) 로봇이 밑에 달려서 가는게 아니다. 2) 올라가는 점은 무조건 비워있어야하고, 내려가는 점의 로봇도 땅으로 내려야한다. 3) 컨베이어 벨트가 움직일 때 로봇도 움직이니 각각 배열을 만들어 둘다 움직여줘야한다. => 그렇게 어려운 문제는 아니었는데 문제를 이해하는데 너무 많은 시간을 쏟은 문제였다. import java.io.BufferedReader; import ..
문제 www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 풀이 1) Prim-Jarnik 알고리즘 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; import java.util.StringToken..
문제 www.acmicpc.net/problem/9996 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net 풀이 *풀이 중점* 1) *를 기준으로 양 옆의 기준 문자열들의 길이 합이 입력받은 문자열보다 크면 안된다. 예를 들어, abcd*abcd이고, 받은 문자열이 abcd이면 올바른 것으로 나온다. 하지만 최소한 abcdabcd 길이 이상으로 나 와야 하기에 이는 안되는 경우이다. 2) 1) 조건을 만족하면 * 기준으로 양 옆의 문자열 길이를 활용해서 입력받은 문자열을 쪼개서..