CODING TEST/baekjoon

#10699 - 오늘 날짜

iamyuunzo 2025. 7. 6. 20:52

📌 문제 정보

- 문제 이름 : #10699번 - 오늘 날짜

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

 

 

📌 문제 요약

- 핵심 조건: 서울의 오늘 날짜를 "YYYY-MM-DD" 형식으로 출력 (채점 서버는 시간대(Timezone)는 UTC+0)

- 시간복잡도 제한: 없음

 

 

📌 내 풀이 및 코드

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        System.out.println(LocalDate.now());
    }
}

<-- 내가 처음에 어떻게 풀었는지 -->

- 문법 몰라서 구글링해서 찾아본게 LocalDate 쓰는거였는데 틀렸다고 나옴.

- 문법적으로는 맞았는데 백준 서버 시간대 때문에 틀린 코드로 쳤음. (내 pc 시간대는 KST이기 때문에)

 

 

📌 최종 정답 및 풀이

import java.time.LocalDate;
import java.time.ZoneId;

public class Main {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul"));
        System.out.println(today);
    }
}

<-- 풀이 요약 -->

- “UTC+0 기준” 힌트를 주면서도, 실제로는 “서울(KST)” 기준 날짜를 출력해야 함.

LocalDate.now() 서버에서 UTC로 찍힘 → 하루 어긋날 수 있음
LocalDate.now(ZoneId.of("UTC")) 무조건 UTC → 서울 기준 아님 → 틀림
LocalDate.now(ZoneId.of("Asia/Seoul")) ✅ 서울 기준 → 정답!

 

 

<-- 다른 풀이 요약 -->

- ZonedDateTime : 날짜 + 시간까지 필요할 땐 ZonedDateTime.now(ZoneId.of("Asia/Seoul")) 도 씀.

- DateTimeFormatter : 만약 포맷을 바꾸고 싶으면 DateTimeFormatter로 "yyyy-MM-dd" 포맷 직접 지정 가능

 



📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- LocalDate 클래스 LocalDate.now() => LocalDate : 오늘 날짜(년-월-일)만 가져옴 (LocalDateTime과 다름)

- ZoneId로 타임존 지정 ZoneId.of("Asia/Seoul") => LocalDate.now()에 원하는 타임존 강제 지정할 때 사용
- 기본은 시스템 타임존(서버는 UTC)이기 때문에, 한국(KST)로 맞출 땐 ZoneId.of("Asia/Seoul") 필수.


- (참고) LocalDate는 시간 정보는 없고 날짜만 있음. 시간까지 필요하면 ZonedDateTime 사용.
- (참고) 날짜 포맷을 바꿔야 하면 DateTimeFormatter.ofPattern("yyyy-MM-dd") 등을 사용.