코딩테스트 & 알고리즘 및 기타/백준_알고리즘 - 단계별 풀이

[Java, 자바] 백준 알고리즘 - 단계별 풀기 (4단계)

정데브 2021. 5. 19. 14:06

4단계 while를 이용한 출력 문제 

 

 

10952번 

  • 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
  • 입력은 여러 개의 테스트 케이스로 이루어져 있다.입력의 마지막에는 0 두 개가 들어온다.
  • 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
  • 각 테스트 케이스마다 A+B를 출력한다.

<Scanner version>

package step4;

import java.util.Scanner;

public class NO_1 {

	public static void main(String[] args) {

		Scanner in=new Scanner(System.in);
		int data=1;  
		
		while(data !=0) {  // 초기값 1임으로 while문 진행
			data=in.nextInt();
			int data2=in.nextInt();
			
			if(data !=0 &&data2 !=0) {   //data와 data2에 0이 아닌값이 들어오면 합을 출력
				System.out.println(data+data2);
			}
		}

	}

}

 

<Buffer version>

package step4;

import java.io.*;
import java.util.StringTokenizer;

public class NO_1_1 {

	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 a=1;  //초기값을 1로 지정
		int b;
		
		StringTokenizer st;
		
		while(a !=0) {
			st=new StringTokenizer(br.readLine()," "); //들어오는 값을 분리해 저장
			a=Integer.parseInt(st.nextToken());  //첫 토큰
			b=Integer.parseInt(st.nextToken());  //다음 토큰 저장
			if(a !=0 &&b !=0) {  // a또는 b가 0이 아니라면
				int c=a+b;           // 더한 값을 c에 저장
				bw.write(c+"\n");   // c값 출력
				
			}
		}
		br.close();
		bw.flush();
		bw.close();

	}

}

 

 

 

10951번 

  • 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
package step4;

import java.util.Scanner;


public class NO_2 {
	/*
	 * 테스트 케이스가 주어지지 않음
	 * 입력이 없을때는 실행되지 않는 것으로 hasNextInt()로 돌림
	 */

	public static void main(String[] args)  {
	        Scanner in = new Scanner(System.in);
	        while(in.hasNextInt())  //입력이 있는 동안만 실행
	            System.out.println(in.nextInt() + in.nextInt());    
	    }
	}

 

 

10951번 

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

import java.util.Scanner;

public class NO_3 {

	public static void main(String[] args) {
	
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int x=n;   //입력받은 n의 값을 copy
		int count=0; //초기 카운트값 0 입력
		in.close();

		while(true) {  //무한 루프 실행
			count++;  //카운트 증가
			x=((x/10+x%10)%10)+(x%10*10);
            //2의자리와 1의자리를 더한 값의 나머지를 1의자리로 만듬
            //위 내용 더하기
            //1의자리에 10을 곱하여 더함
			
			if(n==x) break;
			//n의 값이 x의 값과 동일할때 break문을 만나 반복 종료
		}
		System.out.println(count);

	}

}