백준 2581번 문제는 소수문제입니다. https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 자연수 M부터 N까지의 수 중 소수를 골라 소수의 합과 소수 중 최소값을 출력하는 문제입니다. 답지입니다. 해설을 해보자면 prime(int n)이라는 소수를 확인하는 boolean 메서드를 만들고 시작했습니다. 2부터 n/2보다 작은 수까지 나눴을 때 나머지가 0인 수가 없을 때 그 수는 소수가 됩니다. 그리고 최소값을 추가해주기 위해서 자주 사용하는 i++가 아닌 ..
이 문제는 stack을 사용하는 문제입니다. 1. 첫 번째 문자는 "("이어야 한다. 2. 맨 마지막 문자는 ")"이어야 한다. 3. "(" 개수와 ")"의 개수가 같아야 한다. 이걸 스택으로 생각해볼까요? "(" 이면 push() 한다. ")" 이면 pop 한다. 그런데 stack에 아무것도 없을 때, pop을 하면 오류가 나기 때문에 ")" 나왔을때 비어있지 않다면 pop() 비어 있으면 NO를 출력한다. 이 문제도 BufferedReader를 사용하여 풀었습니다. import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException, NumberFormatExcep..
이 문제 또한 간단한 문제입니다. 예제 2번을 설명한 그림입니다. 0이 나오면 stack에 있는 제일 최근 것을 pop() 하면 되겠다는 생각이 들죠. 그리고 나머지 스택에 들어 있는 걸 다 더해주면 되는데 그건 stack이 빌 때까지 pop()을 하면 됩니다. 시간 초과의 기억으로 게속 BufferedReader에 익숙해지려고 이 문제도 버퍼로 풀었어요. import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamRea..
사실 문제 자체는 어렵지 않았습니다. Stack을 사용하면 되기 때문이죠. 근데 시간초과로 계속 통과가 되지 않더라고요. 많이 검색하던 중 Scanner의 사용이 아닌 BufferedReader, BufferedWirter를 사용하면 통과가 됩니다. BufferedReader는 readLine()으로 받아서 BufferedWriter에 write()를 하여 flush() 하면 한 번에 출력이 됩니다. 따라서 System.out.priuntln() 처럼 출력을 위해서는 "\n"을 해야합니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws NumberFormatExcep..
10250번 문제입니다. 브론즈 3 문제이죠. 언젠가 골드도 쉽게 풀 수 있는 날이 될 때까지 열심히 해보겠습니다. 문제를 설명해보자면 이 그림과 같습니다. 고객의 니즈에 맞게 방배정을 하는 문제인데 엘레베이터가 있기 때문에 엘레베이터와 가까운 방을 좋아하고 가깝다면 더 낮은 층을 원한다고 합니다. 이 문제는 배열로 접근하기 보다는 숫자 장난식으로 접근하는 것에 좋습니다. 첫번째 접근은 0사이에 N % H 와 N / H +1 라고 생각했습니다. 그런데 N % H가 0일 때에는 가장 위 층이기 때문에 H + "0" + N / H 이 됩니다. 삼항연산자를 사용하여 풀었습니다. import java.util.Scanner; public class Main { public static void main(Stri..