이 영역을 누르면 첫 페이지로 이동
codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

페이지 맨 위로 올라가기

codesche's blog

[프로그래머스]2016년

  • 2022.12.23 21:00
  • Algorithm/프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

배열의 개념을 활용하여 문제를 푸는 문제입니다. 하지만 그것외에도 설명할 내용이 더 필요한데

일단 문제풀이 소스부터 한번 보시겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.time.LocalDate;
import java.time.DayOfWeek;
 
class Solution {
    public String solution(int a, int b) {
        String answer = "";
        String[] arr = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
 
        LocalDate date = LocalDate.of(2016, a, b);
        DayOfWeek dayOfWeek = date.getDayOfWeek();
 
        int dayOfWeekNumber = dayOfWeek.getValue();
 
        switch(dayOfWeekNumber) {
            case 1:
                answer = "MON";
                break;
            case 2:
                answer = "TUE";
                break;
            case 3:
                answer = "WED";
                break;
            case 4:
                answer = "THU";
                break;
            case 5:
                answer = "FRI";
                break;
            case 6:
                answer = "SAT";
                break;
            case 7:
                answer = "SUN";
                break;
            default:
        }
 
        return answer;
    }
}
Colored by Color Scripter
cs

문제에서 알 수 있는 내용은 5월 24일이 화요일이라는 정보인데 화요일을 문자열인 "TUE"로 반환하도록 알고리즘을 구현하는 것이 문제의 핵심입니다. 요일은 총 7개밖에 없으니 7개 요소를 가진 문자열 배열을 하나 생성해줍니다.

 

그 다음에 LocalDate라는 클래스를 사용하는데, 해당 클래스는 날짜 값을 읽는 기능을 제공해줍니다. 

여기서 LocalDate.of 이라는 문법을 사용합니다. 이 of이라는 메소드를 통해 연월일의 정보를 date 변수에 저장해줍니다. 그리고 DayOfWeek라는 클래스를 사용하는데 이것은 요일을 표현하는 DayOfWeek Enum을 가져오는 역할을 합니다. 이 DayOfWeek Enum을 가지고 요일을 구할 수 있는데 LocalDate.of에 입력된 연월일에 해당하는 요일을 문자열로 반환해줍니다. 예를 들어 LocalDate.of(2016, 5, 24)인 경우 dayOfWeek는 TUESDAY가 되는 것입니다.

 

그 후에 DayOfWeek의 getValue() 메소드를 활용합니다. 이 메소드는 요일을 숫자로 가져오게 해주는 기능이 있습니다. 월요일부터 일요일까지 1~7의 숫자로 표현됩니다. 즉, 월요일이 1, 일요일이 7입니다. 그래서 화요일은 2가 됩니다. 이 개념을 활용하여 switch~case문을 작성하여 1은 "MON", 2는 "TUE", 3은 "WED", 4는 "THU"....... 이런 식으로 코드를 작성하면 최종적으로 원하는 결과를 얻을 수 있습니다.

 

○ 요약

문제 이해는 그렇게 어렵지 않았는데 막상 LocalDate 클래스나 DayOfWeek를 사용한다는 게 결코 쉬운 접근법은 아니라는 생각이 들었습니다. 유사한 문제를 접하게 될 경우를 고려하여 LocalDate와 DayOfWeek 개념을 이번 기회를 통해 숙지하시면 좋을 듯 합니다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[프로그래머스]-최소 직사각형  (0) 2022.12.28
[프로그래머스]부족한 금액 계산하기  (0) 2022.12.27
[프로그래머스]콜라츠 추측  (0) 2022.12.13
[프로그래머스]자연수 뒤집어 배열로 만들기  (0) 2022.12.08
[프로그래머스]가운데 글자 가져오기  (0) 2022.12.08

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [프로그래머스]-최소 직사각형

    [프로그래머스]-최소 직사각형

    2022.12.28
  • [프로그래머스]부족한 금액 계산하기

    [프로그래머스]부족한 금액 계산하기

    2022.12.27
  • [프로그래머스]콜라츠 추측

    [프로그래머스]콜라츠 추측

    2022.12.13
  • [프로그래머스]자연수 뒤집어 배열로 만들기

    [프로그래머스]자연수 뒤집어 배열로 만들기

    2022.12.08
다른 글 더 둘러보기

정보

codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

  • codesche's blog의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (76)
    • Algorithm (15)
      • 백준 (3)
      • 프로그래머스 (10)
      • inflearn 알고리즘(Java) (2)
    • 블로그소개 (1)
    • Back-End (11)
      • Java (10)
      • SpringBoot (1)
    • Database (2)
      • MySQL (0)
      • MariaDB (1)
      • Redis (0)
      • 개념, 이론 (1)
    • Front-End (0)
      • html, css, javascript (0)
    • Git (2)
    • 알고리즘 지식 (11)
      • 자료구조 (11)
    • Study Cafe (21)
      • 기술면접 (6)
      • Clean Code 스터디 (14)
      • CS 스터디 (0)
      • 개발용어 (1)
    • 주간 에세이 (10)
    • DevOps (3)
      • 배포, Front&Back 연동 (1)
      • AWS (0)
      • Docker (1)
      • 이론 (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • git commit
  • 주간에세이
  • 개발자 현실
  • 자료구조
  • 자바 변수
  • 클린코드
  • 자바 기초
  • java

나의 외부 링크

정보

The Code의 codesche's blog

codesche's blog

The Code

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © The Code. Designed by Fraccino.

티스토리툴바