[ CodingTest ]/Baekjoon

[백준/ 18108번] 1998년생인 내가 태국에서는 2541년생?! (C / Java)

감자도리22 2023. 11. 22. 14:50

문제

 ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.

불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.

입력

서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)

출력

불기 연도를 서기 연도로 변환한 결과를 출력한다.

 

사진 출처 : 백준사이트 문제 18108번(하단 링크 참조)

 


풀이(소스 코드)_C

#include <stdio.h>
int main() {
    int y;
    scanf("%d", &y);
    printf("%d", y-543);
    return 0;
}

 

풀이(소스 코드)_Java 풀이과정

// 오답코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);		
		System.out.print("불기 연도를 입력하세요 : ");
		int y = sc.nextInt();	
		int change = 543;
		System.out.println(y-change);
	}
}

서기연도로 변환해줄 숫자를 변수에 넣었더니 틀림

그래서 출력부분에서 543만 빼주었더니..! "불기 연도를 입력하세요 : " 이거 넣어줘서 틀림;;

결과적으로 맞은 코드는 아래와 같음

 

//정답코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);	
		
		int year  = sc.nextInt();
	
		System.out.println(year - 543);
	}
}

○ ○ ○

문제 풀면서 분명 입력값에 범위 조건이 붙음에도 풀이 식엔 조건 없이 단순(?)하게 생각하고 코딩하여도 통과된다. 

아마 출력 결과 예시에 중점을 두어 문제를 풀기 때문인 것 같다. 


 

 

문제링크 : https://www.acmicpc.net/problem/18108

 

 

개인 공부 기록용입니다:)

728x90