deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 등비수열
  • 릿코드
  • 코딩
  • pandas
  • 빅데이터
  • 통계
  • BMI
  • 마이데이터
  • 제로베이스
  • SQL
  • 부트캠프
  • 계산기
  • 팩토리얼
  • 데이터사이언티스트
  • 최소공배수
  • 등차수열
  • 함수
  • 데이터엔지니어
  • 미니콘다
  • matplotlib
  • 모듈
  • 파이썬
  • 기초수학
  • 군수열
  • 네카라쿠배
  • 소인수분해
  • 데이터분석가
  • 프로그래밍
  • 계차수열
  • 데이터분석

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

스터디

[스터디 후기] 6주차. 백준 문제 및 조별 과제 토의

2022. 7. 19. 00:17

1. 스터디 범위

1) 범위

별찍기, 덱 큐

 

 

2. 스터디 내용

1) 2448. 별 찍기 11

- 재귀를 이용하여 해결한다.

N = int(input())

def getPattern(n):
  
  if n == 3:
    return ['  *  ', ' * * ', '*****']

  pattern = getPattern(n//2)
  patterns = []
  
  patterns.extend([" "*(n//2) + i + " "*(n//2) for i in pattern])
  patterns.extend([i + " " + i for i in pattern])

  return patterns

for i in getPattern(N):
  print(i)

 

2) 2522. 별 찍기 - 12

- 예제와 동일하게 별 찍기

n = int(input())

for i in range(1, n+1): 
    print(' '*(n-i) + '*'*i)
    
for i in range(1, n):
    print(' '*(i) + '*'*(n-i))

 

3) 2556. 별 찍기 - 14

- 지금까지 안 나온 별 찍기가 뭐가 있는지 생각해본 후, 별을 적절히 찍으세요.- 정사각형 출력(non-sense)

n = int(input())

for i in range(n):
    print("*" * n)

 

4) 1996. 프린터 큐

- 중요도 리스트에 대한 인덱스를 따로 만들고 궁금한 문서 위치에 1 값을 부여하여 찾는다.

t = int(input())
for i in range(t):
    cnt=0
    
    n,m = map(int, input().split())         #문서의 개수,문서 위치
    il =list(map(int, input().split()))     #중요도 리스트
    
    m_il = [0 for i in range(n)]         #중요도 위치 인덱스 
    m_il[m]=1                            #중요도가 궁금한 문서(m번째 문서)의 인덱스를 임의로 1로 표시
    
    while True:                          #큐의 첫번째 값이 내가 찾는 값(m)일때까지 반복
        if il[0]==max(il):               #중요도가 제일 큰 값이면 cnt에 1을 더해준다
            cnt+=1
            
            if m_il[0]!= 1:              #원하는 문서가 아니라면
                del il[0]                #중요도의 첫번째 값 삭제
                del m_il[0]              #인덱스의 첫번째 값 삭제
                
            else:                        #원하는 문서라면
                print(cnt)               #cnt를 출력하고 반복문 종료
                break
                      
        else:                            #아니라면 중요도(il)의 첫번째값을 맨뒤에 넣어주고, 삭제
            il.append(il.pop(0))         
            m_il.append(m_il.pop(0))

 

5) 10866. 덱

 @ deque(덱)
- stack 이나 queue 처럼 한 방향에서 삽입과 삭제가 일어나는게 아닌 '양방향' 에서 삽입과 삭제가 일어나는 자료구조
- list와 유사하나 '시간복잡도' 에 차이가 있다.(list는 배열의 형태이기 때문에 삽입, 삭제가 일어나면 상당히 비효율적)
- list 의 삭제연산을 약 O(n) 의 시간이 걸리고 deque 의 삭제연산은 약 O(1) 

from collections import deque
dq = deque([1,2,3,4])
dq.append('a')
print(dq)

-----------------------------
deque([1, 2, 3, 4, 'a'])
from collections import deque
dq = deque([1,2,3,4])
dq.appendleft('a')
print(dq)

-------------------------------
deque(['a', 1, 2, 3, 4])

 

풀이

from collections import deque
import sys

d = deque()              # 덱 선언
n = int(input())

for i in range(n):                            #n만큼 커맨드 담기
    com = sys.stdin.readline().split()

    if com[0] == "push_front":
        d.appendleft(com[1])           # 덱 왼쪽에 넣어줌
        
    elif com[0] == "push_back":
        d.append(com[1])               # 덱 오른쪽에 넣어줌
        
    elif com[0] == "pop_front":        # 덱에 정수 없는 경우 -1 출력
        if len(d) == 0:             
            print("-1")  
            
        else:                          # 덱의 가장 앞에 있는 수를 빼고, 출력 
            print(d.popleft())
            
    elif com[0] == "pop_back":         # 덱에 정수 없는 경우 -1 출력
        if len(d) == 0:             
            print("-1")  
            
        else:
            print(d.pop())             # 덱의 가장 뒤에 있는 수를 빼고, 출력 
            
    elif com[0] == "size":
        print(len(d))
        
    elif com[0] == "empty":             # 덱이 비어있으면 1, 아니면 0
        if len(d) == 0:             
            print("1")
            
        else:
            print("0")
            
    elif com[0] == "front":             # 덱에 정수 없는 경우 -1 출력
        if len(d) == 0:             
            print("-1")
            
        else:                           # 덱 가장 앞 출력
            print(d[0])
            
    elif com[0] == "back":
        if len(d) == 0:                
            print("-1")
            
        else:
            print(d[-1])               # 덱 가장 뒤 출력

'스터디' 카테고리의 다른 글

[스터디 후기] 5주차. 백준 문제 및 조별 과제 토의  (0) 2022.07.11
[스터디 후기] 4주차. 백준 문제 및 조별 과제 토의  (0) 2022.07.04
[스터디 후기] 3주차. 백준 문제 및 조별 과제 토의  (0) 2022.06.27
[스터디 후기] 1. 코딩테스트_1 & EDA 과제_2  (0) 2022.06.19
[스터디 후기] 0. 아이스 브레이킹  (0) 2022.06.12
    '스터디' 카테고리의 다른 글
    • [스터디 후기] 5주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 4주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 3주차. 백준 문제 및 조별 과제 토의
    • [스터디 후기] 1. 코딩테스트_1 & EDA 과제_2
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바