
내가 생각했을때 문제에서 원하는부분
첫 번째 줄에 A역의 이름이 주어집니다.
두 번째 줄에 B역의 이름이 주어집니다.
첫 번째 줄에 부과된 승차 요금을 출력해 주세요.
만약 부과된 승차 요금을 알 수 없다면, 대신 ?를 출력해 주세요.
내가 이 문제를 보고 생각해본 부분
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));: 표준 입력(콘솔)으로부터 데이터를 읽어오기 위한 BufferedReader 객체를 생성한다.
String stationA = br.readLine();: 첫 번째 입력 줄을 읽어 A역의 이름을 나타내는 stationA 변수에 저장한다.
readLine() 메서드는 줄 바꿈 문자를 제외한 한 줄의 문자열을 반환한다.
String stationB = br.readLine();: 두 번째 입력 줄을 읽어 B역의 이름을 나타내는 stationB 변수에 저장한다.
if (stationA.equals(stationB)) { ... }:
여기서는 stationA와 stationB라는 두 문자열이 같은지 비교한다.
중요: 자바에서 문자열의 내용이 같은지 비교할 때는 == 연산자가 아닌 equals() 메서드를 사용해야 한다.
== 연산자는 두 변수가 메모리상에서 동일한 객체를 참조하는지를 비교하고, equals() 메서드는 두 문자열의 실제 내용이 동일한지를 비교하기 때문이다.
만약 두 역의 이름이 같다면 (재승차 할인 조건 충족), 다음 줄이 실행된다.
System.out.println(0);: A역과 B역이 같으므로 재승차 할인이 적용되어 요금 0원을 출력한다.
else { ... }: A역과 B역의 이름이 다를 경우 이 블록이 실행된다.
System.out.println(1550);: 두 역의 이름이 다르므로 재승차 할인이 적용되지 않아 기본 요금인 1550원을 출력한다.
br.close();: BufferedReader가 사용하던 시스템 자원(입력 스트림)을 해제한다.
코드로 구현
package baekjoon.baekjoon_31;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 34665번 문제
public class Main1227 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 첫 번째 줄에서 A역의 이름을 읽습니다.
String stationA = br.readLine();
// 두 번째 줄에서 B역의 이름을 읽습니다.
String stationB = br.readLine();
// A역과 B역의 이름이 같은지 비교합니다.
// 문자열 비교는 '==' 대신 '.equals()' 메서드를 사용해야 합니다.
if (stationA.equals(stationB)) {
// 두 역의 이름이 같으면 재승차 할인이 적용되어 0원이 부과됩니다.
System.out.println(0);
} else {
// 두 역의 이름이 다르면 재승차 할인이 적용되지 않아 1550원이 부과됩니다.
System.out.println(1550);
}
// BufferedReader 자원을 닫아줍니다.
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.