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

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 5430(AC) -Python(파이썬) - 자료구조

  • 2022.06.08 01:36
  • [백준] Python,Java로 풀기📖/자료구조
    반응형
     

    5430번: AC

    각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

    www.acmicpc.net

    문제 풀이

    1. 일단 수행할 함수, 배열에 들었는 수의 개수, 배열에 들어있는 정수를 받아들인다.

    2. 배열에 들어있는 정수는 항상 "["+배열에 들어 있는 정수+"]" 구조로 이루어졌다.

    "[]"을 제외한 값을 리스트로 받아들이기 위해서 인덱스 1부터 -1까지의 인덱스르 리스트로 받아들인다.[1:-1]

    배열   "R"   "D"   "D"
    4 1    
    3 2 1  
    2 3 2 1
    1 4 3 2

    이런 느낌으로 RDD 함수가 진행되면 [ 2,1 ]이 남는다.

     

    📌 문제 풀면서 주의할점

    1. 파이썬에서는 deque 라이브러리를 사용

    2. reverse를 할때마다 하면 시간 초과가 나기 때문에

        "R"을 할 때마다 cnt값을 증가시켜 cnt가 2로 나누어지는지 안 나누어지는지 확인 필요


    문제 풀이

    ① 테스트 케이스의 개수, 수행할 함수, 배열에 들어있는 수의 개수, 배열안의 정수 입력
    ② 배열에 들어있는 수의 개수가 0일 경우 배열을 초기화
    ③ 함수를 수행할 때마다 "R","D"의 값인지 체크
    ④
       1. "R"인 경우 cnt +1
       2. "D"인 경우
         2-1. q의 길이가 0인 경우 error로 출력하고 break
         2-2. q의 길이가 0이 아닌 경우
          cnt%2==0( reverse를 안 하기 때문에 ) : 큐를 왼쪽에서 pop
          cnt%2!=0( reverse이기 때문에 ) : 큐를 오른쪽에서 pop
       3. break가 발생하지 않았을 경우 실행하도록 ( else문 실행 ) 
          3-1. cnt%2==0(reverse 안 하기 때문에) : 그대로 출력
          3-2. cnt%2!=0(reverse 하기 때문에):큐를 reverse 한 후에 출력

    💻 Python(파이썬)

    from collections import deque
    import sys
    
    #테스트 케이스의 개수
    t = int(sys.stdin.readline())
    
    for i in range(t):
        #수행할 함수
        p = sys.stdin.readline()
        #배열에 들어있는 수의 개수
        n = int(sys.stdin.readline())
        #배열 안의 정수 []을 제외하기 위해서 인덱스 [1:-1]
        arr = sys.stdin.readline().rstrip()[1:-1].split(',')
    
        #큐로 구현 -deque 라이브러리 사용
        q = deque(arr)
    
        #R의 개수 체크
        cnt = 0
    
        #n의 개수가 0개 일때는 배열을 초기화
        if n == 0:
            q = []
    
        for j in p:
            #'R'인 경우
            if j == 'R':
                #cnt값 증가
                cnt += 1
            #'D'인 경우
            elif j == 'D':
                #큐의 길이 0인 경우는 무조건 error
                if len(q) == 0:
                    print("error")
                    break
                else:
                    #reverse 안하기 때문에 왼쪽에서 pop
                    if cnt % 2 == 0:
                        q.popleft()
                    #reverse 하기 때문에 오른쪽에서 pop
                    else:
                        q.pop()
        #break를 안할 경우
        else:
            #reverse 안하기 때문에 그래도 출력
            if cnt % 2 == 0:
                print("[" + ",".join(q) + "]")
            #reverse 하기 때문에 reverse 하기
            else:
                q.reverse()
                print("[" + ",".join(q) + "]")

    💻 Java( 자바 )

    ...나중에 ...해야겠다..

     

    반응형

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

    백준 9012(괄호) - 스택  (1) 2024.10.14
    백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조  (0) 2022.07.03
    백준 10828(스택) - Python(파이썬),Java(자바) -자료구조,스택  (0) 2022.06.07
    백준 1158(요세푸스 문제) - Python(파이썬),Java(자바) - 자료구조(큐)  (0) 2022.06.07
    백준 1927(최소 힙) - Python(파이썬) - 자료구조  (0) 2022.06.01

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 9012(괄호) - 스택

      백준 9012(괄호) - 스택

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

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

      2022.07.03
    • 백준 10828(스택) - Python(파이썬),Java(자바) -자료구조,스택

      백준 10828(스택) - Python(파이썬),Java(자바) -자료구조,스택

      2022.06.07
    • 백준 1158(요세푸스 문제) - Python(파이썬),Java(자바) - 자료구조(큐)

      백준 1158(요세푸스 문제) - Python(파이썬),Java(자바) - 자료구조(큐)

      2022.06.07
    다른 글 더 둘러보기

    정보

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

    쿄코코

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

    검색

    메뉴

    • 홈

    카테고리

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

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

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

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

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

    티스토리

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

    티스토리툴바