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

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 2164번(카드2) - 큐, 자료구조

  • 2024.10.21 21:45
  • [백준] Python,Java로 풀기📖/자료구조
    반응형

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

     

     

    ❓ python 풀이 - 규칙 찾아서 풀었따...

    내가 생각한 규칙은

    1(2^0) 1
    2(2^1) 2
    3 2*(3-2) = 2
    4(2^2) 4
    5 2*(5-4) = 2
    6 2*(6-4) = 4
    7 2*(7-4) = 6
    8(2^3) 8
    9 2
    10 2*(10-8) = 2
    11 2*(11-8) = 2
    12 2*(12-8) = 2
    13 2*(13-8) = 2
    14 2*(14-8) = 2
    15 2*(15-8) = 2
    16(2^4) 16
    1. 2의 거듭제곱인 경우:
      • 2의 거듭제곱에 해당하는 수는 그대로 남습니다. 예를 들어, 1, 2, 4, 8, 16은 그대로 해당 값이 남습니다.
      • 즉, 2^n인 경우 마지막 남는 카드는 그 값 그대로입니다.
    2. 2의 거듭제곱보다 큰 수인 경우:
      • 2의 거듭제곱을 기준으로 해당 수(N)에서 거듭제곱을 뺀 후, 그 값에 다시 2를 곱한 결과가 마지막에 남는 카드가 됩니다.
      • 예를 들어, N = 3일 때 N이 2와 4 사이에 있으므로, N - 2 = 1이고 2 * 1 = 2가 마지막에 남습니다.
      • N = 5일 때, N - 4 = 1, 2 * 1 = 2가 마지막에 남습니다.
      • N = 6일 때, N - 4 = 2, 2 * 2 = 4가 마지막에 남습니다
    #처음 생각한 풀이
    import sys
    
    i = int(sys.stdin.readline().strip())  # 카드의 개수를 입력받음
    s = i #s에 i를 복사함
    
    count = 0 #2의 거듭제곱 찾기 위해서 사용된 변수
    # i보다 작은 가장 큰 2의 거듭제곱을 찾기 위한 반복문
    while s // 2 > 0:
        count += 1
        s = s // 2
    
    # 마지막 남은 카드 계산
    # 2의 거듭제곱이 아닌 경우, 남은 카드를 계산
    if i != pow(2, count):
        print((i - pow(2, count)) * 2)
    else:
        print(i)
    import math
    import sys
    
    def last_card(n):
        # 2의 거듭제곱이 아닌 경우를 처리하기 위해 가장 큰 2의 거듭제곱을 찾음
        if n == 1:
            return 1  # N이 1이면 그대로 1이 남음
    
        # N보다 작거나 같은 가장 큰 2의 거듭제곱 찾기
        highest_power_of_two = 2 ** int(math.log2(n)) #log2를 이용하면 2의 거듭제곱 값 구할 수 있음
    
        # 입력하는 N이 2의 거듭제곱인 경우
        if highest_power_of_two == n:
            return n
    
        # 입력하는 N이 2의 거듭제곱이 아닌 경우
        return (n - highest_power_of_two) * 2
    
    
    # 입력 받기
    N = int(sys.stdin.readline().strip())
    
    # 결과 출력
    print(last_card(N))

     

    ❓ python 풀이 - 큐로 푼 경우

    from collections import deque # 큐 import
    import sys
    
    N = int(sys.stdin.readline().strip())
    cards = deque(range(1,N+1)) # 1부터 N까지의 숫자를 큐에 넣음
    
    # 카드가 한 장 남을 때까지 반복
    while len(cards)>1:
        cards.popleft() # 첫 번째 카드를 버림
        cards.append(cards.popleft()) # 그다음 카드를 맨 아래로 옮김
    
    print(cards[0])
    반응형

    '[백준] Python,Java로 풀기📖 > 자료구조' 카테고리의 다른 글

    백준 10733번 (제로) - 자료구조, 스택  (0) 2024.10.21
    백준 10828(스택) - 스택, 자료구조  (0) 2024.10.14
    백준 9012(괄호) - 스택  (0) 2024.10.14
    백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조  (0) 2022.07.03
    백준 5430(AC) -Python(파이썬) - 자료구조  (0) 2022.06.08

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 10733번 (제로) - 자료구조, 스택

      백준 10733번 (제로) - 자료구조, 스택

      2024.10.21
    • 백준 10828(스택) - 스택, 자료구조

      백준 10828(스택) - 스택, 자료구조

      2024.10.14
    • 백준 9012(괄호) - 스택

      백준 9012(괄호) - 스택

      2024.10.14
    • 백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조

      백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조

      2022.07.03
    다른 글 더 둘러보기

    정보

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

    쿄코코

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

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • 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📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

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

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

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

    티스토리

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

    티스토리툴바