728x90
반응형

자바 134

[JAVA / 자바] Scanner와 BufferedReader / System.out.print와 BufferWriter의 차이

여러분들은 Scanner함수와 System.out.print함수를 아마도 즐겨 쓰고 있을 것입니다. 왜냐면 입출력 시에 이 두 함수가 사용하기도 편리하고 쉽기 때문이죠, 하지만 나중에 시간 초과에 걸릴 위험이 큰 함수들이 바로 Scanner와 System.out.print함수입니다. 그렇다면 시간 초과에 걸리지 않을 방법은 무엇일까요? 바로, BufferReader함수와 BufferWriter함수가 해법이 될 수 있습니다. 왜 그럴까요? Scanner 1. 입력을 받으면 이것이 어떠한 형의 단어인지 구분하여 분석을 한다.(int, String 등,,,) 2. 입력값의 경계로 공백, 엔터 모두 인식이 가능하다. 3. 사용하는 버퍼의 사이즈는 1024 chars이다. 4. 문자열 파싱이 가능하다. 5. IO..

[JAVA / 자바] System.out.printf()로 포맷 출력

java에서 출력하는 대표적인 함수는 System.out.print()를 들 수 있습니다. 그러나, 출력 서식을 지정하고 싶을 때는 System.out.printf()를 사용합니다. System.out.printf("출력 서식", 출력할 내용); 위와 같이 System.out.printf() 함수를 사용하게 되는데 이때 출력할 내용은 출력 서식 안에 있는 지시자의 위치로 들어가게 됩니다. 이때, 지시자는 출력할 내용의 형에 따라 다르게 되는데 그 내용은 다음과 같습니다. 지시자 출력 %n ( = \n) 줄바꿈 %d Integer 형식 %f Float 형식 %c ( = %C) char 형식 %s OR %S String 형식(소문자, 대문자) %b OR %B boolean 형식(소문자, 대문자) %x OR ..

[JAVA / 자바] 백준 4673번 - 셀프 넘버

문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자릿수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))),... 과 같은 무한수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런 식으로 다음과 같은 수열을 만들 수 있다. (33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141,...) n을 d(n)의 생성자라..

[JAVA / 자바] 백준 4344번 - 평균은 넘겠지

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 문제 접근 방법 그 반의 평균을 구한 후에 다시 그 반 학생들의 점수와 비교해서 평균 이상 인 학생의 수를 구해야 하므로 리스트에 학생들의 점수를 저장해놓아야 한다. 이때, 테스트 케이스가 1개가 아니라 여러 개이므로 매 케이스마다 리스..

[JAVA / 자바] 백준 1546번 - 평균

문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학 점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절..

[JAVA / 자바] 백준 2562번 - 최댓값

문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 문제 접근 방법 첫 번째 숫자를 최댓값이라 가정하고 이후 입력될 8개의 서로 다른 수를 내가 가정한 수와 비교해주면서 최신화해준다. 이때, 최댓값만 최신화하는 것이 아니라 몇 번째 수인 지도 같이 최신화해주면 된다. JAVA..

[JAVA / 자바] 백준 10818번 - 최소, 최대

문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 문제 접근 방법 첫 번째 입력되는 숫자를 최댓값 혹은 최솟값이라 가정하고 이후 입력되는 숫자를 비교하여 내가 처음 가정한 숫자보다 더 크면 최댓값을 바꿔주고 더 작으면 최솟값을 바꿔주면서 마지막 숫자까지 비교를 마치면 그때의 최댓값과 최솟값을 출력해주면 되는 문제이다. 1. if문 사용 2. Math클래스 함수 사..

[JAVA / 자바] 백준 1110번 - 더하기 사이클

문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 있어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번 만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..

[JAVA / 자바] 백준 10951번 - A+B(4)

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 문제 접근 방법 언뜻 보면 단순히 수를 입력받아 두 수의 합을 출력하면 되는 것처럼 보이지만, 입력이 몇 줄이 올 줄 몰라 *EOF를 구분하여 입력을 알아서 종료해야 한다. 따라서 hasNext함수를 이용해 다음 입력이 있는지 확인하고 입력이 없으면 입력을 종료하여야 한다. *EOF(End Of File): 파일이 끝났다. 즉, 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 의미. JAVA 코드 풀이 impo..

[JAVA / 자바] 백준 15552번 - 빠른A+B

문제 입력되는 두 수를 더하여 출력하는 코드를 작성하시오. 이때, Scanner와 System.out.println을 사용하면 시간제한에 걸리므로 대신 BufferedReader와 BufferedWriter를 사용하여 작성하시오. 입력 첫 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T 줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. 출력 각 테스트 케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다. 문제 접근 방법 단순히 두 수를 더하여 출력하면 되는 문제이지만, 시간제한이 짧게 걸려있어 BufferedReader와 BufferedWriter를 사용하여 코드를 구성해주어야 한다. JAVA 코드 풀이 import java.io..

728x90
반응형