목록백준 (5)
IT 일기장
https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net BufferedReader와 StringTokenizer 개념을 활용하면 꽤나 쉬운 문제였다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void ma..
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 입력한 수를 아스키 코드로 만들어서 '0' 을 빼면 각 자리의 숫자가 나온다... 는 개념만 알면 쉬운 문제다 1. 첫번째로 입력하는 숫자는 별 의미 없기 때문에 두번째부터 입력 받는다 2. 두번째 입력하는 곳에서 숫자 아무거나 입력해준다. 3. 입력받은 값을 getBytes() 함수를 이용해 byte[] 로 변환해주면 내가 입력한 문자열에서 문자를 하나씩 딸 수 있다. 4. 반환된 문자들이 아스키코드라서 이 상태에서 '0'을 빼주면 문자 하나씩 딴 값이 나온다 import ja..
https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 1. Scanner로도 할 수 있지만 BufferedReader로 선언했다. 2. 입력 3개 받고 곱해준다. 3. 0~9 까지 개수 받으려고 배열을 10개 선언했다. 그럼 딱 0~9 까지니까 4. 곱한 수를 10으로 계속 나눠주면서 10으로 나눈 나머지값을 배열에 담아준다. ex) 11*22*33 = 7986 7986 % 10 = 6 (7986을 10으로 나눈 나머지) 798 % 10 = 8 79 % 10 = 9 7 % 10 = 7 5. 이렇게 배열에..
3개의 정수 중, 2번째로 큰 정수를 출력 하라는 문제가 있었는데 Arrays라는 배열 클래스로 쉽게 풀 수 있다 sort 함수를 이용하면 오름차순으로 정렬이 가능하기 때문에 일단 정리해둔다 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { /* 3개의 정수 중, 2번째로 큰 정수 출력 1. 배열 사용해서 오름차순으로 정렬하고 index 값이 1인 부분을 찾는다 */ Scanner scan = new Scanner(System.in); int number[] = new int[3]; for(int i=0 ; i
백준 사이트에서 문제풀던 중, Scanner로 입출력하는 방식이 아닌 BufferedReader, BufferedWriter로 입출력하는 방식을 발견했다. 이를 이용하면 입출력 속도가 Scanner는 1.6초정도 나오는데 Buffered를 이용하면 1초정도 나온다.. 신기해서 정리해봤다. 다만 사용시 유의할점이 있다. try ~ catch로 예외처리 필수다. 밑에 예제처럼 처리할 경우 공백("") 구분자인 StringTokenizer가 필요하다. buffered 함수 처리를 완료했으면 close()나 flush() 함수를 반드시 써야된다. (수정) 밑에 System.out.println으로 출력을 해보니 시간 초과로 통과하지 못했다. 이걸 bw.write()로 바꿔서 출력해줬더니 통과했다. 확실히 속도차..