2793 구구단
자바의 구구단은 for문, while 문, do-while문이 있다.
그중 가장 많이 사용하는 반복문은 for문으로, for (초기문; 조건식; 반복 후 작업){ ~~ } 으로 사용한다.
반복 후 작업문에 콤마로 분리하여 2문장을 작성할 수도 있고, for 문안에서만 사용되는 변수를 선언할 수도 있다.
조건식에 true 혹은 작성을 하지 않으면 무한반복이다.
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i=Integer.parseInt(br.readLine());
int j=1;
for (j=1;j<10;j++){
bw.write(i+" * "+j+" = "+i*j);
bw.write("\n");
}
bw.flush();
bw.close();
br.close();
}
}
BufferedWriter는 int형 변수를 작성해고 int형으로 출력되지 않는다고 한다.
10950 A+B-3
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i=Integer.parseInt(br.readLine());
for (int k=0;k<i;k++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
bw.write(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())+"\n");
bw.flush();
}
//bw.flush();
bw.close();
br.close();
}
}
나는 입력할때마다 바로 출력되게 해야하는 줄 알았는데, 출력결과를 저장하고 한번에 출력해도 된다.
즉, 주석처리한 부분에 bw.flush()를 넣어도 정답처리된다.
시간을 더 단축하고 싶다면 StringBuilder 메소드(문자열 합치기)를 이용할 수도 있다.
BufferedWriter와 비슷한 방식으로 진행하고 append로 저장, print로 한번에 출력한다.
8393 합
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a=0;
int i=Integer.parseInt(br.readLine());
for (int k=1;k<=i;k++){
a+=k;
}
System.out.println(a);
br.close();
}
}
변수 입력은 한번만 받으니 더 간단하게 int i=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
도 가능
25304 영수증
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int all=Integer.parseInt(br.readLine());
int num=Integer.parseInt(br.readLine());
int a=0;
for (int k=0;k<num;k++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
a=Integer.parseInt(st.nextToken())*Integer.parseInt(st.nextToken())+a;
}
if (all==a){
System.out.println("Yes");
}
else{
System.out.println("No");
}
br.close();
}
}
25314 코딩은 체육과목 입니다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
//import java.util.StringTokenizer;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int i=Integer.parseInt(br.readLine())/4;
for (int k=0;k<i;k++){
bw.write("long ");
}
bw.write("int");
bw.flush();
bw.close();
br.close();
}
}
15552 빠른 A+B
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i = Integer.parseInt(br.readLine());
StringTokenizer st;
for (int k = 0; k < i; k++) {
st = new StringTokenizer(br.readLine(), " ");
bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()) + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
한줄에 하나씩이라며!
flush()를 반복문에 넣으면 시간초과난다.
2438 별 찍기 - 1
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) throws IOException {
int i=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
for (int n = 1; n <= i; n++) {
for (int j = 1; j <= n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
n, i, j 변수가 헷갈리지 않게 주의하자.
2439 별 찍기 - 2
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) throws IOException {
int i=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
for (int n = 1; n <= i; n++) {
for (int j = i-n; j >0; j--) {
System.out.print(" ");
}
for (int j = 1; j <=n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
처음에 j>0이 아니라 j>=0으로 잘못했더니 출력 형식이 잘못됐다고 틀렸당..ㅎ
10952 A+B - 5
코드는 위와 비슷하지만 무한루프로 해주어야한다. 무한루프로 가장 많이 쓰는 방식은 while(true)
그리고 반복문 안에 조건과 함께 break;를 넣어주자.
if (a==0 && b==0){
break;
}
10951 A+B - 4
반복문의 종료조건이 없다.
즉 입력에서 데이터를 읽을 수 없을 때 종료한다.
데이터를 읽을 수 없는 것, 즉 데이터가 없을 때 EOF(End Of File)이라 한다.
Scanner와 BufferedReader 읽을 데이터가 없는 경우 반환하는 데이터가 다르다.
우리가 입력을 할 때 예외처리를 하려면 ctrl+z로 강제 종료 혹은 정수가 아닌 문자열을 입력해 오류를 일으킨다.
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
while(in.hasNextInt()){
int a=in.nextInt();
int b=in.nextInt();
System.out.println(a+b);
}
in.close();
}
}
nextInt()를 통해 데이터를 입력받는다. 이 때 데이터가 올바르지 않은 경우 예외를 던지며 입력을 받지 않고 hasnextInt()에서 False를 반환한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String str;
while( (str=br.readLine()) != null ){
st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
BufferedReader는 null을 반환한다.
# 회고
아직 익숙하지 않아서 error: cannot find symbol 오류를 참 많이 만났다.
오타 오류..
'코딩테스트' 카테고리의 다른 글
[JAVA] 문자열 (0) | 2024.01.16 |
---|---|
[JAVA] 1차원 배열 (0) | 2024.01.14 |
[JAVA] 조건문 (0) | 2024.01.12 |
[JAVA] 입출력과 사칙연산 (1) | 2024.01.10 |
[BAEKJOON] 24060 : 알고리즘 수업 - 병합 정렬 1 (0) | 2023.07.28 |