알고리즘/문제풀이
-
해설 기본적인 사칙연산만 하다가 조금 복잡한 연산이 나왔습니다. 숫자 A가 주어졌을 때 숫자 B를 곱하는 방법은 다음과 같습니다. 숫자 A x 숫자B의 각 자리수 각 자리수를 곱해주어야하기 때문에 굳이 숫자 B는 int로 받지않았습니다. String으로 받아서 각 자리를 char로 반복하면 각 자리를 손쉽게 얻을 수 있습니다. char의 경우, 유니코드 값이 존재하므로 '0'을 빼준다면 문자가 가지는 실제 숫자를 얻을 수 있습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args)..
백준 - 2588번 곱셈해설 기본적인 사칙연산만 하다가 조금 복잡한 연산이 나왔습니다. 숫자 A가 주어졌을 때 숫자 B를 곱하는 방법은 다음과 같습니다. 숫자 A x 숫자B의 각 자리수 각 자리수를 곱해주어야하기 때문에 굳이 숫자 B는 int로 받지않았습니다. String으로 받아서 각 자리를 char로 반복하면 각 자리를 손쉽게 얻을 수 있습니다. char의 경우, 유니코드 값이 존재하므로 '0'을 빼준다면 문자가 가지는 실제 숫자를 얻을 수 있습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args)..
2023.07.13 -
해설 기본적인 사칙연산 문제입니다. 여기서 알아두어야할 것은 바로 모듈러(나머지) 연산입니다. 이 문제를 푸는데는 필요가 없지만 후에 알고리즘을 풀 때 사용하는 경우가 있습니다. 알고리즘 문제를 푸는 과정에서 결과 값이 매우 큰 경우, 결과 값의 나머지를 구하라는 문제가 자주 등장합니다. 단순히 결과 값에 모듈러 연산을 수행할 시 결과 값이 이미 너무 커져 오버플로우가 발생하는 경우가 있는데, 연산 과정 도중에 모듈러 연산을 적용해야 이러한 오버플로우가 발생하지 않습니다. 모듈러 연산에 대한 자세한 내용은 후에 다루도록 하겠습니다. 여기선 이런게 있구나 하는 정도만 알고 넘어가시길 바랍니다. 코드 import java.io.BufferedReader; import java.io.IOException; i..
백준 - 10430번 나머지해설 기본적인 사칙연산 문제입니다. 여기서 알아두어야할 것은 바로 모듈러(나머지) 연산입니다. 이 문제를 푸는데는 필요가 없지만 후에 알고리즘을 풀 때 사용하는 경우가 있습니다. 알고리즘 문제를 푸는 과정에서 결과 값이 매우 큰 경우, 결과 값의 나머지를 구하라는 문제가 자주 등장합니다. 단순히 결과 값에 모듈러 연산을 수행할 시 결과 값이 이미 너무 커져 오버플로우가 발생하는 경우가 있는데, 연산 과정 도중에 모듈러 연산을 적용해야 이러한 오버플로우가 발생하지 않습니다. 모듈러 연산에 대한 자세한 내용은 후에 다루도록 하겠습니다. 여기선 이런게 있구나 하는 정도만 알고 넘어가시길 바랍니다. 코드 import java.io.BufferedReader; import java.io.IOException; i..
2023.07.13 -
해설 불기 연도를 서기 연도로 바꾸는 프로그램을 만드는 문제입니다. 불기 연도를 검색해서 찾아봐도 좋겠지만, 번거롭기 때문에 ㅎㅎ 그냥 입력과 출력 예시를 계산해서 차이를 파악한 후 그것을 이용해서 계산을 진행했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int year = Integer.parseI..
백준 - 18108번 1998년생인 내가 태국에서는 2541년생?!해설 불기 연도를 서기 연도로 바꾸는 프로그램을 만드는 문제입니다. 불기 연도를 검색해서 찾아봐도 좋겠지만, 번거롭기 때문에 ㅎㅎ 그냥 입력과 출력 예시를 계산해서 차이를 파악한 후 그것을 이용해서 계산을 진행했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int year = Integer.parseI..
2023.07.13 -
해설 기본적인 입출력 문제입니다. 문자열을 합쳐야하는 경우엔 문자열 + 문자열 같은 방식으로 해도 되지만, 합칠 문자열이 많다면 StringBuilder를 이용하는 것이 좋습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(br.readLine() + "??!"); } }
백준 - 10926번 ??!해설 기본적인 입출력 문제입니다. 문자열을 합쳐야하는 경우엔 문자열 + 문자열 같은 방식으로 해도 되지만, 합칠 문자열이 많다면 StringBuilder를 이용하는 것이 좋습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(br.readLine() + "??!"); } }
2023.07.13 -
해설 기본적인 사칙연산 문제입니다. 기본적인거라 따로 추가적인 해설은 없고, 출력에 관한 이야기를 잠깐 하려고 합니다. 연산한 결과를 모두 출력문을 사용해서 출력을 한다면 연산 결과의 개수(N) 만큼 리소스 사용이 발생합니다. 출력문의 비용이 그렇게 가벼운 편은 아니기 때문에 N이 늘어날수록 성능은 더욱 안좋아지게 됩니다. 이 문제 같은 경우엔 출력을 별로 안해서 성능상 문제는 없지만, 만약 출력할게 많다하면 StringBuilder를 이용해서 하나로 만들어 출력해주는 것이 좋습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringToken..
백준 - 10869번 사칙연산해설 기본적인 사칙연산 문제입니다. 기본적인거라 따로 추가적인 해설은 없고, 출력에 관한 이야기를 잠깐 하려고 합니다. 연산한 결과를 모두 출력문을 사용해서 출력을 한다면 연산 결과의 개수(N) 만큼 리소스 사용이 발생합니다. 출력문의 비용이 그렇게 가벼운 편은 아니기 때문에 N이 늘어날수록 성능은 더욱 안좋아지게 됩니다. 이 문제 같은 경우엔 출력을 별로 안해서 성능상 문제는 없지만, 만약 출력할게 많다하면 StringBuilder를 이용해서 하나로 만들어 출력해주는 것이 좋습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringToken..
2023.07.13 -
해설 기본적인 입출력 + 연산 문제입니다. 처음 자바를 배우는 분들이 실수하실 수도 있는 부분은 int로 연산을 진행하는 경우, 소수점 자리는 저장되지 않는다는 것 입니다. 그렇기 때문에 연산을 진행할 때 double로 형변환을 하거나 변수를 double로 받으시면 됩니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..
백준 - 1008번 A/B해설 기본적인 입출력 + 연산 문제입니다. 처음 자바를 배우는 분들이 실수하실 수도 있는 부분은 int로 연산을 진행하는 경우, 소수점 자리는 저장되지 않는다는 것 입니다. 그렇기 때문에 연산을 진행할 때 double로 형변환을 하거나 변수를 double로 받으시면 됩니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..
2023.07.13 -
해설 이전에 풀었던 A+B와 동일한 문제입니다. 코드 package baekjoon; import java.util.Scanner; /** * 번호 - 1001 * 제목 - A-B * 문제 - 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. * 입력 - 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) * 출력 - 첫째 줄에 A-B를 출력한다. */ public class No_1001 { public static void main(String[] args) { // 기본적인 입력 방법 Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.println(A..
백준 - 1001번 A-B해설 이전에 풀었던 A+B와 동일한 문제입니다. 코드 package baekjoon; import java.util.Scanner; /** * 번호 - 1001 * 제목 - A-B * 문제 - 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. * 입력 - 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) * 출력 - 첫째 줄에 A-B를 출력한다. */ public class No_1001 { public static void main(String[] args) { // 기본적인 입력 방법 Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.println(A..
2023.07.12 -
해설 기본적인 입출력 및 사칙연산 문제입니다. 입력을 받는 방법으로 주로 사용되는 것은 Scanner와 BufferedReader입니다. 지금은 기본적인 문제기 때문에 Scanner로 풀었지만, 입력이 많아지는 경우 버퍼를 사용하는 BufferedReader를 사용하는 것이 유리합니다. BufferedReader의 경우, StringTokenizer와 함께 사용되는 경우가 많습니다. split() 보다 성능이 좋기 때문에 알고리즘 문제에서는 BufferedReader + StringTokenizer로 문제를 푸는 경우가 많습니다. 코드 package baekjoon; import java.io.IOException; import java.util.Scanner; /** * 번호 - 1000 * 제목 - ..
백준 - 1000번 A+B해설 기본적인 입출력 및 사칙연산 문제입니다. 입력을 받는 방법으로 주로 사용되는 것은 Scanner와 BufferedReader입니다. 지금은 기본적인 문제기 때문에 Scanner로 풀었지만, 입력이 많아지는 경우 버퍼를 사용하는 BufferedReader를 사용하는 것이 유리합니다. BufferedReader의 경우, StringTokenizer와 함께 사용되는 경우가 많습니다. split() 보다 성능이 좋기 때문에 알고리즘 문제에서는 BufferedReader + StringTokenizer로 문제를 푸는 경우가 많습니다. 코드 package baekjoon; import java.io.IOException; import java.util.Scanner; /** * 번호 - 1000 * 제목 - ..
2023.07.12 -
해설 가장 기본적인 출력 문제입니다. Java에서 주로 사용되는 출력 방식은 System.out.printXXX() 방식이나 BufferedWriter를 이용한 방식이 있습니다. 이번 문제에서는 간단하게 한 문장인 Hello World를 출력하기 때문에 System.out.println() 을 사용했지만, 많은 양의 출력을 해야하는 경우엔 버퍼를 사용하는 BufferedWriter를 사용하는 것이 성능적인 측면에서 좋습니다. 코드 package baekjoon; import java.io.IOException; /** * 번호 - 2557 * 제목 - Hello World * 문제 - Hello World!를 출력하시오. * 입력 - 없음 * 출력 - Hello World! */ public class ..
백준 - 2557번 Hello World해설 가장 기본적인 출력 문제입니다. Java에서 주로 사용되는 출력 방식은 System.out.printXXX() 방식이나 BufferedWriter를 이용한 방식이 있습니다. 이번 문제에서는 간단하게 한 문장인 Hello World를 출력하기 때문에 System.out.println() 을 사용했지만, 많은 양의 출력을 해야하는 경우엔 버퍼를 사용하는 BufferedWriter를 사용하는 것이 성능적인 측면에서 좋습니다. 코드 package baekjoon; import java.io.IOException; /** * 번호 - 2557 * 제목 - Hello World * 문제 - Hello World!를 출력하시오. * 입력 - 없음 * 출력 - Hello World! */ public class ..
2023.07.12 -
문제 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 풀이 💡 제가 푼 방법보다 더 좋은 방법이 있을 수 있습니다. 이렇게 푸는게 항상 정답은 아니니 참고하셔야 합니다. 범위는 1 ~ 10¹⁴로 입력값을 담는 타입은 long을 이용해야 합니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long A = Long.parseLong(s..
백준 - 1456: 거의 소수문제 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 풀이 💡 제가 푼 방법보다 더 좋은 방법이 있을 수 있습니다. 이렇게 푸는게 항상 정답은 아니니 참고하셔야 합니다. 범위는 1 ~ 10¹⁴로 입력값을 담는 타입은 long을 이용해야 합니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long A = Long.parseLong(s..
2023.05.24