카테고리 131

[백준] 6064 : 카잉 달력

https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net M과 N의 최소공배수가 최대연도니까 그만큼 for문을 돌림. year을 +1 해주면서 x 와 y 를 계산해줌. 이때 나머지가 0인 경우를 생각해야 하기 때문에 x, y를 입력할 때 -1을 해준다. 나온 year에 +1 해준 값이 답. 내 코드 메모리 : 44152 KB 시간 : 632 ms 코드 길이 : 1131 B [내 코드] import java.io.BufferedReader; import ja..

[백준] 2751 : 수 정렬하기 2

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net N의 최대 크기가 1000,000이기 때문에 시간복잡도를 줄이는 게 중요하다고 생각함. Collections의 sort 메소드를 사용했는데, 그래도 시간이 많이 나온 것 같다. 내 코드 메모리 : 129832 KB 시간 : 1416 ms 코드길이 : 670 B [내 코드] import java.io.BufferedReader; import java.io.IOException; impor..

백준/정렬 2023.04.07

[JAVA] 5692 : 팩토리얼 진법

https://www.acmicpc.net/problem/5692 5692번: 팩토리얼 진법 상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다. www.acmicpc.net 수를 String으로 받아서 계산해줌 factorial 메소드 구현 >> 최대 5의 길이여서 아예 값을 저장한 배열을 구현해도 좋았을 것 같다. 메모리 : 25240 KB 시간 : 340 ms 코드길이 : 683 B [내 코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; publ..

알고리즘/수학 2023.04.07

[백준] 10867 : 중복 빼고 정렬하기

https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net HashSet이라는 인터페이스 개념과 Iterator를 공부하게 됐다. 향상된 for문이라는 개념도 공부했음. 메모리 : 25008 KB 시간 : 336 ms 코드길이 : 840 B [내 코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import jav..

백준/정렬 2023.04.07

[백준] 1107 : 리모컨

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net +,- 버튼만 사용해서 도달하는 경우와 버튼으로 바로 채널로 이동하여 +,- 버튼 사용하는 경우 두 가지 중 최솟값을 구하려고 했다. 가장 차이가 적은 고장난버튼이 포함되어있지 않은 채널을 구하는 방법을 고민하다가, 모든 경우의 수를 전부 탐색할 때, 입력된 수부터 탐색하여 해당 수에 고장난버튼이 있으면 ++해서 탐색, --해서 탐색 두 가지를 돌렸다. 그런데 구현을 너무 복잡하게..

[백준] 1476 : 날짜계산

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net %를 이용해서 풀려고 했는데 단순 반복문으로 가능했다. 쉽게 풀 수 있던 문제를 너무 꼬아 생각했던 것 같음. 메모리 : 14112 KB 시간 : 124 ms 코드길이 : 809 B [내 코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringT..

[백준] 스택 : 9093

https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 입력을 어떻게 해야 할지 굉장히 헤맸다. stack을 사용해야 하는 건 알겠는데 한 줄을 반대로 하는 게 아니라 단어를 반대로 해야 하는 거여서 어떻게 끊을지 고민함. 끝에 '\n'를 추가한 한 줄을 모두 String으로 입력한 후에 Character 타입의 스택에 ' '와 '\n'를 만나면 모두 pop 아니면 push를 해주며 반복했다. 메모리 : 72032 KB 시간 : 720 ms 코..

백준/자료구조 2023.04.06

[백준] 3085 : 사탕게임

https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net N의 최대가 굉장히 작아서 4중포문까지도 괜찮았기 때문에 편하게 코드를 짰다. 근데 코드가 너무 반복되는 것도 많고 복잡하고 길어지는 느낌이라 결국 찾아봄. 반복되는 부분이 많으면 따로 메소드를 짜서 사용하는 것이 편하다고 한다. 메소드 짜는 것도 피하지 말고 많이 해봐야 할 것 같음. 바꿀 수 있는 부분을 하나씩 바꾼 후에 요소가 바뀐 행과 열을 탐색 해주고 최댓값을 구한다. 변경은 한 번만 되니 바꿨던 부분은 다시 돌려줌. 가로로 변경되면 요소가 바뀐 열이 2개, 요소가 바뀐 행이 1개 세로로 변경되면 요소가 ..

[백준] 2309 : 일곱난쟁이

전체 키를 합한 후 100을 뺀 값을 저장. 더해서 위의 값을 만족하는 두 수를 저장한 후에 제외한 7개의 수를 오름차순으로 출력. 메모리 : 14092 KB 시간 : 124 ms 코드길이 : 1183 B import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buff..

[백준] 2470 : 두 용액

더해서 0에 가장 가까운 용액을 구하는 것이니 기준이 되는 값에 -1을 곱하여 그와 가장 가까운 수 이분탐색으로 구함. 투포인터로 더 빠르고 쉽게 구현할 수 있는 것 같았는데 이분탐색 공부 중이여서 이분탐색으로 해결함. 나중에 투포인터 공부할 때가 되면 한 번 더 해봐야겠다. 메모리 : 28328 KB 시간 : 408 ms 코드길이 : 2367 B [내 코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static int[] arr..

백준/이분탐색 2023.04.06