import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Num = sc.nextInt();
for (int i=1; i<10; i++) {
System.out.println(Num+" * "+i+" = "+(Num*i));
}
}
}
i를 출력해야하는 상황이라면 i=1 로해주자
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int Num = Integer.parseInt(bf.readLine());
for (int i = 0; i<Num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println(A+B);
}
}
}
입력받은 수만큼 반복하고 싶다면 변수로 포장해서 i<Num 이렇게 활용하자
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Num = sc.nextInt();
int Sum=0;
for (int i =1; i<=Num; i++) {
Sum+=i;
}
System.out.println(Sum);
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int Sum = Integer.parseInt(bf.readLine());
int Num = Integer.parseInt(bf.readLine());
int checkNum = 0;
for (int i = 0; i<Num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int price = Integer.parseInt(st.nextToken());
int count = Integer.parseInt(st.nextToken());
checkNum+=price*count;
}
if (Sum==checkNum) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int Num = sc.nextInt();
for (int i = 0; i<Num/4; i++) {
System.out.print("long ");
}
System.out.print("int");
}
}
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int Num = Integer.parseInt(bf.readLine());
for (int i = 0; i<Num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
// System.out.println(A+B); // 시간초과남
bw.write(A+B+"\n");
// bw.flush(); // 나머지 전부출력
}
bw.close();
}
}
시간복잡도를 고려해서 푸는 문제다. 보통의 Scanner와 System.out.println으로는 통과할 수 없다. BufferedReader와 BufferedWriter를 사용해야 한다.
bw.write(A+B+"\n"); 에서 +"\n"를 무조건 사용해야한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int count = Integer.parseInt(bf.readLine());
for (int i = 1; i<=count; i++) {
st = new StringTokenizer(bf.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println("Case #"+i+": "+(A+B));
}
}
}
위 코드와 같이 StringTokenizer st; 를 선언해주고 따로 사용하자
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int count = Integer.parseInt(bf.readLine());
for (int i = 1; i<=count; i++) {
st = new StringTokenizer(bf.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println("Case #"+i+": "+A+" + "+B+" = "+(A+B));
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
for (int i = 1; i<=count; i++) {
for (int j = 1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
for (int i = 1; i<=count; i++) {
for (int z = count; z>i; z--) {
System.out.print(" ");
}
for (int j = 1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
별찍기는 첫번째 반복문에서 몇줄인가 나타내고 두번째 반복문에서 내부 구성을 하는데 print로 이어주고, 여러 반복문으로 나열되어 결합될 수 있다. 반복조건을 구성할때 반드시 첫번째 반복문의 i를 사용해야 한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
while (true) {
st = new StringTokenizer(bf.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
if (A==0 && B==0) {
break;
} else {
System.out.println(A+B);
}
}
}
}
break; 사용
while (true) {} 무한루프
// Scanner 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int A = sc.nextInt();
int B = sc.nextInt();
System.out.println(A+B);
}
}
}
// BufferedReader + StringTokenizer 사용
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 + String.charAt() 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str;
while( (str=br.readLine()) != null ){
int a = str.charAt(0) - 48;
int b = str.charAt(2) - 48;
sb.append(a+b).append("\n");
}
System.out.print(sb);
}
}
이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다.
즉 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.
이렇게 데이터가 더이상 존재하지 않을 때 우리는 EOF (End of File) 즉, 파일의 끝이라 한다.