SHUSTORY

[ 백준 ] 11021(2)번 : A + B - 7(8) _ JAVA 본문

코딩테스트/JAVA

[ 백준 ] 11021(2)번 : A + B - 7(8) _ JAVA

어서오시우 2023. 11. 28. 20:49
728x90
문제

 

내 풀이
import java.io.*;

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 T = Integer.parseInt(br.readLine());
int sum[] = new int[T];
for (int i = 0; i < T; i++) {
String st = br.readLine();
String tokens[] = st.split(" ");
sum[i] = Integer.parseInt(tokens[0]) + Integer.parseInt(tokens[1]);
bw.write(String.format("case #%d: %d\n", (i+1),sum[i]));
}
bw.flush();
bw.close();
br.close();
}
}
  • String.format
    • 문자열 결합에서 + 대신에 String.format을 사용하면 가독성이 더 좋아진다.
    • String.format은 지정된 형식과 값을 사용하여 문자열을 생성하는 메서드이다.
    • 형식 지정자
      • %d : 정수
      • %f : 부동 소수점 숫자
        • %.2f와 같이 사용하여 소수점 2자리까지 출력하는 등 원하는 소수점 자릿수까지 출력 가능하다.
      • %s : 문자열
      • %c : 문자
      • %b : boolean

 

  • 이 문제를 풀면서 들었던 의문이 있다.
    bw.write(sum[i])를 형변환 없이 출력할 경우 원하는 int 자료형의 sum 값이 출력되는 것이 아닌
    이상한 문자가 출력되는 것을 볼 수 있었다.
    그런데 위와 같이 String.format( ) 을 사용할 경우 sum[i] 의 값도 내가 출력하고자 하는 값이 출력된다.
    • String.format 은 문자열을 형식화하기 위한 메서드로, 내부적으로 문자열을 생성한 후 반환한다.
      따라서 sum[i]가 int형태이더라도 String.format을 사용하여 형식화된 문자열로 변환되어 출력되는 것이다.
      즉 bw.write에는 문자열로 전달되기 때문에 sum[i] 값이 정상적으로 출력된다.
    • 결국 String.format을 사용하면 내부에서 자동으로 int를 문자열로 변환해주기 때문에 명시적으로 변환할 필요가 없다.

 


문제

 

내 풀이
import java.io.*;

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 T = Integer.parseInt(br.readLine());
int[] A = new int[T];
int[] B = new int[T];
int[] sum = new int[T];

for (int i = 0; i < T; i++) {
String st = br.readLine();
String tokens[] = st.split(" ");
A[i] = Integer.parseInt(tokens[0]);
B[i] = Integer.parseInt(tokens[1]);
sum[i] = A[i] + B[i];
bw.write(String.format("Case #%d: %d + %d = %d\n", (i + 1), A[i], B[i], sum[i]));
}
bw.flush();
bw.close();
br.close();
}
}
  • 위 응용버전 기록용