1단계 구구단
- 출력형식과 같게 N1부터 N9까지 출력한다.
import java.util.Scanner;
public class Step_01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a;
a = scan.nextInt();
System.out.println(a+" * 1 = "+ a*1);
System.out.println(a+" * 2 = "+ a*2);
System.out.println(a+" * 3 = "+ a*3);
System.out.println(a+" * 4 = "+ a*4);
System.out.println(a+" * 5 = "+ a*5);
System.out.println(a+" * 6 = "+ a*6);
System.out.println(a+" * 7 = "+ a*7);
System.out.println(a+" * 8 = "+ a*8);
System.out.println(a+" * 9 = "+ a*9);
}
}
A.
- 문자와 숫자의 동시 출력한다.
2단계 A+B - 3
- 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
- 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
- 각 테스트 케이스마다 A+B를 출력한다.
import java.util.Scanner;
public class Step_02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
for (int i = scan.nextInt(); i > 0; i--) {
int a, b;
a = scan.nextInt();
b = scan.nextInt();
System.out.println(a+b);
}
}
}
A.
- 반복문을 작성한다. for문의 int에는 반복 횟수인 첫 입력을 지정하고, 조건을 설정한다.
- 다음으로 오는 2가지 숫자를 각각 a, b로 선언하고 a+b를 출력한다.
3단계 합
- n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
import java.util.Scanner;
public class Step_3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a=0;
for (int i = scan.nextInt(); i > 0; i--) {
a = a+i;
}
System.out.println(a);
}
}
A.
- 결과물을 받을 int를 선언한다.
- for문을 작성하고 int 부분에 입력 값을 대입한다.
- 현재 i값을 변수에 a에 추가하고 i값이 1까지 줄어드는 for문을 완성한다.
- a의 값을 출력한다.
4단계 영수증
- 첫째 줄에는 영수증에 적힌 총 금액 x가 주어진다.
- 둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 n이 주어진다.
- 이후 n개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
- 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 yes를 출력한다. 일치하지 않는다면 no를 출력한다.
import java.util.Scanner;
public class Step_4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a;
a= scan.nextInt();
for (int i = scan.nextInt(); i>0; i--) {
int b,c;
b= scan.nextInt();
c= scan.nextInt();
a=a-b*c;
}
if (a == 0) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
}
}
A.
- 총 금액을 int에 받아준다.
- for문을 만들어주고 int i에 물건 종류를 받아준다.
- int b, c를 선언하고 다음 2 값을 받아서 총 금액에서 b,c의 곱을 빼주는 식을 작성한다.
- a의 값이 0일 경우 참이기 때문에 yes, 나머지 경우 no를 출력한다.
5단계 코딩은 체육과목 입니다
- 첫 번째 줄에는 문제의 정수N이 주어진다.
- 정수 자료형의 이름을 출력하여라.(n값을 4로 나눈 수 만큼의 long이 붙는 int값)
import java.util.Scanner;
public class Step_5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String a = "";
for (int i = scan.nextInt()/4; i>0; i--) {
a = a + "long ";
}
System.out.println(a + "int");
}
}
A.
- long 문자열을 받을 String a를 선언하고 “”로 초기화한다.
- for문을 만들고 int i에 입력 받은 정수n/4를 대입한다.
- for문이 동작 할 때마다 a에 “long “가 연결되는 반복문을 작성한다.
- 반복이 끝나면 a + “int”를 추가하여 출력한다.
6단계 빠른 A+B
- 첫 번째 줄에는 문제의 정수N이 주어진다.
- 정수 자료형의 이름을 출력하여라.(n값을 4로 나눈 수 만큼의 long이 붙는 int값)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Step_6 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int a = Integer.parseInt(br.readLine());
for (int i=0; i<a; i++) {
st = new StringTokenizer(br.readLine());
bw.write((Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()))+"\\n");
}
bw.flush();
bw.close();
}
}
BufferedReader 와 BufferedWriter
- buffered reader는 입력된 데이터가 바로 전달되지 않고 버퍼를 거치게 해준다. 따라서 속도 측면에서 효율적. 많은 양의 데이터 처리에 유리하다.
- scanner 와 차이로 경계 인식이 Enter만 인식하고 데이터를 String으로 고정되어 받기 때문에 다른 타입으로 변환이 WrapperClass를 이용하여 형변환이 필요하다.
- BufferedReader는 import가 다르기 때문에 자동 임포트를 이용하여 임포트를 입력해주어야한다.
- 예외처리가 필수이다. throw를 이용하여 예외처리가 된다.
- 자동 임포트시 class를 import할 수 있다.
- main 클래스 옆에 throws IOException를 추가하여야 한다.
- 오류를 클릭 시 자동으로 예외처리를 해주긴 한다.
- 인식이 라인 단위이기 때문에 공백 단위로 데이터를 입력하기 위해서는 따로 작업이 필요하다.
- bufferedwriter는 버퍼를 잡아놓기 대문에 flush()나 close()를 호출하여 뒷정리를 해야한다.
- bw. write() : 버퍼에 있는 값 전부 출력
- bw.flush; : 남아있는 데이터를 모두 출력시킴
- bw.close(); : 스트림을 닫음
- bw는 자동 줄 바꿈이 없기 때문에 \n을 직접 추가하여 줄 바꿈을 하여야 한다.
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 버퍼의 저장과 출력을 위한 툴 선언
- StringTokenizer st; // 줄단위로 인식하는 readLine을 스페이스 단위로 인식하도록 하는 변수
- st = new StringTokenizer(br.readLine()); //줄 단위로 인식하는 readLine을 스페이스 단위로 인식하여 st에 저장하도록 하는 코드
7단계 A+B - 7
- 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
- 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
- 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
import java.util.Scanner;
public class Step_7 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b, c;
c = scan.nextInt();
for (int i = 0; i<c; i++) {
a =scan.nextInt();
b =scan.nextInt();
System.out.println("Case #" + (i+1) + ": " + (a + b));
}
}
}
A
- 테스트 케이스를 int c에 받아서 for문의 반복 회수로 사용한다.
- int i = 0부터 상승하는 반복문으로 하는 것이 편하다.
- 다음 2개의 int를 int a,b에 받아서 출력한다.
8단계 A+B - 8
- 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
- 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
- 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.
import java.util.Scanner;
public class Step_8 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b, c;
c = scan.nextInt();
for (int i = 0; i<c; i++) {
a =scan.nextInt();
b =scan.nextInt();
System.out.println("Case #" + (i+1) + ": " + a + " + " + b + " = " + (a + b));
}
}
}
A
- 7단계와 같은 방식으로 하고, 출력문에서 String과 int의 연산을 처리한다.
9단계 별 찍기 - 1
- 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
- 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
import java.util.Scanner;
public class Step_9 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a;
int b=1;
a = scan.nextInt();
for (int i = 0; i<a; i++) {
for (int j =0; j<b; j++) {
System.out.print("*");
}
b++;
System.out.println("");
}
}
}
A
- int a와 b를 선언하고 a에는 첫 int를 받아주고, b는 1로 초기화한다.
- for문을 만들고, int i = 0부터 실시하는 반복문을 만든다.
- for문 내부에 for문을 만들고, 각 줄에 별을 찍을 회수에 따른 반복문을 만든다. 출력은 줄바꿈이 없는 print를 이용한다.
- 별을 찍은 후 다음 줄에 찍을 별의 개수(b)를 1만큼 늘리는 증감 연산자를 추가한다.
- 반복문 종료 전에 줄을 바꿔주는 println(””)을 추가한다.
10단계 별 찍기 - 2
- 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
- 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
*
**
***
****
*****
import java.util.Scanner;
public class Step_10 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a;
int b=1;
a = scan.nextInt();
for (int i = 0; i<a; i++) {
for (int k =0; k<a-b; k++) {
System.out.print(" ");
}
for (int j =0; j<b; j++) {
System.out.print("*");
}
b++;
System.out.println("");
}
}
}
A
- int a와 b를 선언하고 a에는 첫 int를 받아주고, b는 1로 초기화한다.
- for문을 만들고, int i = 0부터 실시하는 반복문을 만든다.
- for문 내부에 for문을 만들고, 내부에 for문을 2개 만들어서 앞에서는 빈칸을 반복해서 찍고, 뒤에서는 *을 반복해서 찍는다.
- 별을 찍은 후 다음 줄에 찍을 별의 개수(b)를 1만큼 늘리는 증감 연산자를 추가한다.
- 반복문 종료 전에 줄을 바꿔주는 println(””)을 추가한다.
11단계 A+B - 5
- 입력은 여러 개의 테스트 케이스로 이루어져 있다.
- 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
- 입력의 마지막에는 0 두 개가 들어온다.
- 각 테스트 케이스마다 A+B를 출력한다.
import java.util.Scanner;
public class Step_11 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b;
a = scan.nextInt();
b = scan.nextInt();
while (a != 0 || b != 0) {
System.out.println(a+b);
a = scan.nextInt();
b = scan.nextInt();
}
}
}
A
- int a, b를 선언하고 처음으로 받는 두 int로 초기화한다.
- while문을 작성하고 a와 b가 둘 모두 0인 경우만 멈추는 조건식을 작성한다.
- 받아온 a+b를 출력하고 다음 숫자를 a, b에 대입하고 반복문을 종료한다.
12단계 A+B - 4
- 입력은 여러 개의 테스트 케이스로 이루어져 있다.
- 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
- 각 테스트 케이스마다 A+B를 출력한다.
import java.util.Scanner;
public class Step_12 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b;
while (scan.hasNextInt()) {
a = scan.nextInt();
b = scan.nextInt();
System.out.println(a+b);
}
}
}
A
- int a, b를 선언한다.
- while문을 만들고 다음 입력이 없을 때 까지를 조건으로 지정한다. scan.hasNextInt()는 다음 int가 없을 시 false가 되는 특징을 이용해 while문의 종결 조건으로 사용한다.
- a,b에 입력된 값을 받아서 a + b를 출력한다.
'백준' 카테고리의 다른 글
백준 닷컴 단계 별로 풀어보기 6단계 (1) | 2023.10.04 |
---|---|
백준 닷컴 단계 별로 풀어보기 5단계 (1) | 2023.09.21 |
백준 닷컴 단계 별로 풀어보기 4단계 (1) | 2023.09.19 |
백준 닷컴 단계 별로 풀어보기 2단계 (1) | 2023.09.19 |
백준 닷컴 단계 별로 풀어보기 1단계 (0) | 2023.09.18 |