반응형
문제 설명
직각삼각형이 되기 위한 조건은 주어진 세 변의 길이가 각각 x, y, z이고, 가장 큰 변의 길이를 x라고 했을 때,
x^2 = y^2 + z^2(피타고라스 공식)이 성립하는 것이다.
Scanner 대신 효율적인 방법을 풀어보기 위해 BufferedReader와 StringBuilder를 활용하였다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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();
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int z = Integer.parseInt(st.nextToken());
if(x == 0 && y == 0 && z== 0) break;
if((x * x + y * y) == z * z) {
sb.append("right").append('\n');
} else if((z * z + y * y) == x * x) {
sb.append("right").append('\n');
} else if((x * x + z * z) == y * y) {
sb.append("right").append('\n');
} else {
sb.append("wrong").append('\n');
}
}
System.out.println(sb);
}
}
풀이과정
- 이전 문제와 마찬가지로 BufferedReader를 통해 입력값을 문자열로 받는다.
- StringBuilder 객체를 생성한다.
- while문 내부에 StringTokenizer 객체를 생성하고 BufferedReader 객체를 통해 입력받은 문자열을 " "을 기준으로 분리한다.
- nextToken을 통해 x,y,z에 분리된 토큰을 순서대로 넣는다.
- x,y,z가 모두 0이면 프로그램을 종료한다.
- 그 외에는 피타고라스의 법칙을 만족하는 경우 StringBuilder 객체에 right를 추가하고 '\n'을 입력해 다음 줄로 넘기고 아닌 경우 wrong을 추가한다.
- while문을 탈출하면 StringBuilder 객체에 저장된 문자열을 출력한다.
처음 학습한 개념인 StringBuilder에 대해서는 아래에 정리해두겠다.
StringBuilder란 무엇인가
- 설명: Java에서 제공하는 문자열을 효율적으로 조작할 수 있게 해주는 클래스
- 특징
- 가변성(mutable): 한 번 생성된 StringBuilder 객체 내부 문자열을 변경할 수 있다. 이 특성은 String과는 대조적인데,
String 객체는 불변(immutable)이기 때문에 문자열이 변경될 때마다 새로운 String 객체를 생성해야 한다. - 효율성(efficiency): 문자열을 변경하거나 추가할 때 매우 효율적. 문자열 연산이 빈번한 경우 성능 향상
- 가변성(mutable): 한 번 생성된 StringBuilder 객체 내부 문자열을 변경할 수 있다. 이 특성은 String과는 대조적인데,
- 사용방법
StringBuilder sb = new StringBuilder(); // StringBuilder 객체 생성
sb.append("안녕하세요, "); // 문자열 추가
sb.append("저는 Java를 잘 다룹니다."); // 문자열 추가
System.out.println(sb.toString()); // StringBuilder의 내용을 출력
위의 코드에서처럼, StringBuilder 객체를 생성한 뒤에 append 메소드를 사용하여 문자열을 추가할 수 있다. toString 메소드를 사용하면 StringBuilder 객체에 저장된 문자열을 String 형태로 변환하여 사용할 수 있다.
그 외에도 StringBuilder 클래스는 문자열을 삭제(delete), 교체(replace), 뒤집기(reverse) 등의 다양한 메소드를 제공한다.
반응형
'Algorithm > baekjoon' 카테고리의 다른 글
[백준 1181 파이썬/python] 단어 정렬 (0) | 2023.06.11 |
---|---|
[백준 10250 자바/java] ACM 호텔 (0) | 2023.05.26 |
[백준 1085 자바/Java] 직사각형에서 탈출 (0) | 2023.05.25 |
[백준 2920 자바/Java] 음계 (0) | 2023.05.23 |
[백준 11720 파이썬/python] 숫자의 합 (0) | 2023.03.08 |