이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

99클럽 코테 스터디 26일차 TIL - DP(백준-전력망을 둘로 나누기)

  • 2024.11.22 23:09
  • Python/😈 99클럽 코테 스터디 4기 TIL
    반응형

    https://www.acmicpc.net/problem/9655

    • 오늘의 학습 키워드 : DP 
    • 공부한 내용
      • DP
      • 처음 문제를 보자마자 생각한건.. 이건 무슨 알고리즘인가? 이러고서는 그냥 규칙부터 찾았다.
        N이 짝수인지 홀수인지에 따라 출력이 달라진다고 생각했다.
        짝수인 경우에는 창영이가 이겨서 "CY"
        홀수인 경우에는 상근이가 이겨서 "SK
      • 이 문제에서 상근이와 창영이는 한 번의 차례에 돌을 1개 또는 3개씩 가져갈 수있는데... 1과 3은 모두 홀수이기 때문에:
        • 처음 돌의 개수가 홀수이면, 홀수 차례에 상근이가 마지막 돌을 가져감.
        • 처음 돌의 개수가 짝수이면, 짝수 차례에 창영이가 마지막 돌을 가져감.

    1️⃣ 처음 풀이

    import sys
    
    N = int(sys.stdin.readline().strip())
    
    #짝수 like 2면 끝나는 사람이 이김
    #홀수 like 3면 시작하는 사람이 이김
    if N%2==0:
        print("CY")
    else:
        print("SK")

     

    2️⃣ DP로 푼경우

    import sys
    
    # 입력값 N을 받음 (돌의 개수)
    N = int(sys.stdin.readline().strip())
    
    def stone_game(N):
        # dp[i]: 돌이 i개일 때, 상근이가 이기면 True, 창영이가 이기면 False
        dp = [False] * (N + 1)
        
        # 초기값 설정
        # 돌이 1개일 때: 상근이가 가져가므로 SK 승리
        dp[1] = True
    
        # 돌이 2개일 때: 상근이가 1개 가져가면 창영이가 마지막 돌을 가져감 → CY 승리
        if N >= 2:  # N이 2 이상일 때만 설정
            dp[2] = False
    
        # 돌이 3개일 때: 상근이가 3개를 모두 가져가므로 SK 승리
        if N >= 3:  # N이 3 이상일 때만 설정
            dp[3] = True
    
        # 돌이 4개일 때: 상근이가 1개를 가져가면 창영이가 나머지 3개를 가져감 → CY 승리
        if N >= 4:  # N이 4 이상일 때만 설정
            dp[4] = False
    
        # 동적 계획법(DP) 계산
        for i in range(5, N + 1):  # 돌이 5개 이상일 때부터 점화식으로 결과 계산
            # dp[i]는 창영이의 패배 상태가 있으면 True
            # 즉, 상근이가 1개를 가져갔을 때(dp[i-1]) 또는 3개를 가져갔을 때(dp[i-3]) 창영이가 지는 경우
            dp[i] = not dp[i - 1] or not dp[i - 3]
    
        # N개의 돌로 시작했을 때 승자가 상근이면 "SK", 창영이면 "CY" 반환
        return "SK" if dp[N] else "CY"
    
    # 결과 출력
    print(stone_game(N))

     

    • 오늘의 공부 회고
      • 오랜만에 DP도 풀고 좋은.. 경험..?
      • 이제 새롭게 dp 접근하니깐 오늘의 문제 난이도는 soso 였다고 한다~
      • 마지막으로 서현진 짤로

    반응형

    'Python > 😈 99클럽 코테 스터디 4기 TIL' 카테고리의 다른 글

    99클럽 코테 스터디 28일차 TIL - DP(백준11055-가장 큰 증가하는 부분 수열 )  (0) 2024.11.24
    99클럽 코테 스터디 27일차 TIL - DP(백준11722-가장 긴 감소하는 부분 수열 )  (0) 2024.11.23
    99클럽 코테 스터디 24일차 TIL - 완전탐색(프로그래머스-전력망을 둘로 나누기)  (0) 2024.11.20
    99클럽 코테 스터디 23일차 TIL - 완전탐색(프로그래머스- 소수찾기)  (0) 2024.11.20
    99클럽 코테 스터디 22일차 TIL - 완점탐색,백트래킹 (프로그래머스- 피로도)  (1) 2024.11.18

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 99클럽 코테 스터디 28일차 TIL - DP(백준11055-가장 큰 증가하는 부분 수열 )

      99클럽 코테 스터디 28일차 TIL - DP(백준11055-가장 큰 증가하는 부분 수열 )

      2024.11.24
    • 99클럽 코테 스터디 27일차 TIL - DP(백준11722-가장 긴 감소하는 부분 수열 )

      99클럽 코테 스터디 27일차 TIL - DP(백준11722-가장 긴 감소하는 부분 수열 )

      2024.11.23
    • 99클럽 코테 스터디 24일차 TIL - 완전탐색(프로그래머스-전력망을 둘로 나누기)

      99클럽 코테 스터디 24일차 TIL - 완전탐색(프로그래머스-전력망을 둘로 나누기)

      2024.11.20
    • 99클럽 코테 스터디 23일차 TIL - 완전탐색(프로그래머스- 소수찾기)

      99클럽 코테 스터디 23일차 TIL - 완전탐색(프로그래머스- 소수찾기)

      2024.11.20
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (172)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (28)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
        • AWS SAA C03공부하기 (3)
      • 까먹을까봐 적는 것들 (5)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 코딩테스트준비
    • 항해99
    • 백준
    • 99클럽
    • 오블완
    • TiL
    • 티스토리챌린지
    • 프로그래머스

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

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

    티스토리

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

    티스토리툴바