SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
주어진 정수의 앞 두 자리를 유효숫자로 하여 표기하는 프로그램을 작성하세요.
예를 들어 정수 588235는 5.88235*105 인데, 앞의 소수 부분을 소수점 두 번째 자리에서 반올림하여 5.9*105로 나타내는 것입니다.
하나의 예외로, 9999 같은 경우 9.999*103에서 9.999의 소수점 두 번째 자리를 반올림하여 1.0*104으로 나타내야 합니다.
입력
첫 번째 줄에 테스트 케이스의 수 TC가 주어진다
이후 TC개의 테스트 케이스가 새 줄로 구분되어 주어진다.
각 테스트 케이스마다 하나의 정수 N이 주어진다. ( 10^2 ≤ N ≤ 10^100000)
출력
각 테스트 케이스마다 ‘# ’( t 는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
주어진 정수의 앞 두 자리를 유효숫자로 하여 출력한다. 출력 예제의 형식을 따라 출력해야 한다.
소스코드
import java.io.*;
class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
String n = br.readLine();
int square = n.length() - 1; // 지수
int x = Integer.parseInt(n.charAt(0) + ""); // 첫 번째 숫자
int y = Integer.parseInt(n.charAt(1) + ""); // 두 번째 숫자
int z = Integer.parseInt(n.charAt(2) + ""); // 세 번째 숫자
// 반올림되면
if (z >= 5) {
y += 1;
if(y == 10) {
x += 1;
y = 0;
if(x == 10) {
x = 1;
square += 1;
}
}
}
sb.append("#" + (i + 1) + " " + x + "." + y + "*10^" + square + "\n");
}
System.out.println(sb);
}
}
해결 방법
- 지수(square)는 기본적으로 [입력받은 문자열의 길이 - 1]이다.
- 반올림에 영향을 받는 첫 번째(x), 두 번째(y), 세 번째(z) 숫자를 뽑는다.
- z를 반올림한다. 올림이 되면 y를 1 증가시킨다.
- y가 10이면 x를 1 증가시키고 y는 0이 된다.
- x가 10이면 x를 1로 바꾸고 지수(square)를 1 증가시킨다.
'알고리즘 > SWEA' 카테고리의 다른 글
| [SWEA] 11315번 : 오목 판정 (1) | 2023.11.03 |
|---|---|
| [SWEA] 1860번 : 진기의 최고급 붕어빵 (0) | 2023.11.02 |
| [SWEA] 16910번 : 원 안의 점 (0) | 2023.10.26 |
| [SWEA] 18662번 : 등차수열 만들기 (1) | 2023.10.24 |
| [SWEA] 2001번 : 파리 퇴치 (1) | 2023.10.23 |