다희의 코딩 성장일기

[JUNGOL] 정올 1009. 각 자리수의 역과 합(Number Reverse)_자바 JAVA 본문

Algorithm/정올

[JUNGOL] 정올 1009. 각 자리수의 역과 합(Number Reverse)_자바 JAVA

ilmiodiario 2020. 12. 27. 17:09

 

[ 문제 ]  정올 1009. 각 자리수의 역과 합(Number Reverse)

 

 

문제 링크jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=288&sca=2040

 

JUNGOL

 

www.jungol.co.kr

 

 


 

[ 입출력 ]

 


 

[ 풀이 ]

 

< 접근 방법 및 풀이 >

 

  • 입력받은 숫자를 역수로 어떻게 바꾸고 각자리 수의 합을 어떻게 구할지가 관건인 문제.
  • 1. 역수로 바꾸기
  • String 으로 입력받은 수를 StringBuffer의 reverse함수를 이용하면 쉽게 역수로 바꿀 수 있다. 하지만 type이 string이 아니므로 toString()을 통해 다시 string으로 바꿔준다.
  • 2. 역수의 각 자리수 합 구하기
  • for문을 통해 역수 String의 길이만큼 charAt()메소드를 통하 한글자씩 띄어 - '0' 계산하면 int로 변환된다. 그 값을 sum에 더해주면 끝.

< 주의할 점 >

 

  • 역수로 바꾼 string을 그대로 출력했더니, 1597845100 으로 입력이 들어오면 0015487951로 출력되서, 꼭 int로 한번 바꿔주기!

 

JAVA코드
package 수학2;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import javax.sound.sampled.ReverbType;

public class 각자리수의역과합_1009 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			String s = sc.next(); //string 으로 입력
			if(Integer.parseInt(s)  == 0) break;
			
			// 역수 구하기
			String s2 = new StringBuffer(s).reverse().toString(); //스트링버퍼 이용해 입력받은 string 역수로 바꿈.
			int num2 = Integer.parseInt(s2); 
			
			int sum = 0;
			for (int i = 0; i < s2.length(); i++) {
				sum += s2.charAt(i) - '0';
			}
			System.out.println( num2+ " " + sum);

				
		}
	}
}

 

(모바일일 경우 가로버전으로 보세요.)

 

 


 

REVIEW

 

 

자바는 진짜 String 관련 함수 잘 알면 문자열 처리에 유용하다는 걸 다시한번 느꼈다.

Comments