GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • PYTHON
  • 영어
  • 프론트엔드
  • 프로그래머스풀이
  • 백준
  • 코딩
  • 프로그래머스자바스크립트
  • 독해
  • 영어독해
  • 코테
  • 코딩테스트
  • 자바스크립트
  • 프로그래머스
  • 백준풀이
  • 파이썬
  • 코드업파이썬
  • 백준파이썬
  • 코드업
  • 프로그래밍언어
  • javascript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 1 문제 , 백준 파이썬 14891 , 톱니바퀴
알고리즘 공부/백준 - 파이썬

백준/ Silver 1 문제 , 백준 파이썬 14891 , 톱니바퀴

2022. 2. 17. 17:19

백준/ Silver 1 문제 , 백준 파이썬 14891 , 톱니바퀴

 

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------

난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>
함수를 호출할 때 방향에 -를 붙이는걸 신경쓰지 못하고 계속 답이 다르게 나와서 가만보니 한쪽이 시계방향이면 그 옆쪽은 반시계방향으로 호출했어야했는데 방향을 똑같이 그대로 집어넣었던 것.

 

<문제 출처>

 

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

 

14891번: 톱니바퀴

첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터

www.acmicpc.net

------------------------------------------------------------------------------------------------------------------------------

 

 

처음에 deque 로 pop, popleft 를 사용할려 했는데, rotate 라는 기능이 있었다.

 

deque 선언후 roate를 활용하면 손 쉽게 원하는 방향이랑 칸만큼 재배열 해준다.

 

rotate(1)  이면 오른쪽으로 1칸씩

 

rotate(-1) 이면 왼쪽으로 1칸씩 이다.

 

 

입력값은 우선 이 코드로 받는다.

 

check 를 통해 num과 direction 을 입력받았을때 톱니바퀴가 맞물린 상태를 확인한다.

 

만약 서로 다른 극이 마주하고 있으면 회전시 돌아가게 False 값을 주고

 

같은 극이라면 True 값을 줘 이후 함수 선언에서 rotate를 할지 말지를 정해준다.

 

이후,

 

 

각각 오른쪽과 왼쪽 톱니바퀴를 다루는 함수를 설정해 다뤄준다.

 

num>4 와 num<1 을 통해 범위를 넘는건 걸러주기

 

 

 

 

 

위와 아래 코드 모드 rotate_right, rotate_left 를 호출 할 때 방향앞에 - 를 붙여 줬는데 옆에 톱니바퀴는 지금 돌아가는 톱니바퀴와 반대 방향으로 돌아가기 때문이다. 이 점을 유의해서 풀면 된다.

 

 

이후 

 

 

다 돌아간 톱니바퀴에서 0번째 값들을 확인해 점수를 매겨준다.

 

1 2 4 8 씩 점수가 늘어나므로 2의 거듭제곱을 이용했다.

 

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------

정답

 

 

 

 

 

 

from collections import deque

def rotate_right(num,direction): 
    if num>4:
        return
    
    if check[num-1]==False:
        Gear[num].rotate(direction)
        rotate_right(num+1,-direction)

def rotate_left(num,direction): 
    if num<1:
        return

    if check[num]==False:
        Gear[num].rotate(direction)
        rotate_left(num-1,-direction)


Gear=[0]
for i in range(4):
    Gear.append(deque(list(map(int,list(input())))))

for _ in range(int(input())):
    num, direction = map(int,input().split())
    check=[True, Gear[1][2]==Gear[2][6], Gear[2][2]==Gear[3][6], Gear[3][2]==Gear[4][6], True]

    Gear[num].rotate(direction)
    rotate_right(num+1, -direction)
    rotate_left(num-1, -direction)
    
score=0

for i in range(4):
    if Gear[i+1][0]==1:
        score+=2**i

print(score)

 

 

 

 

 

 

반응형

'알고리즘 공부 > 백준 - 파이썬' 카테고리의 다른 글

백준/ Silver 2 문제 , 백준 파이썬 4948, 베르트랑 공준  (0) 2022.02.26
백준/ Silver 5 문제 , 백준 파이썬 1417 , 국회의원  (0) 2022.02.25
백준/ Silver 1 문제 , 백준 파이썬 9465 , 스티커  (0) 2022.02.16
백준/ Silver 5 문제 , 백준 파이썬 11170 , 0의 개수  (0) 2022.02.15
백준/ Silver 2 문제 , 백준 파이썬 11724 , 연결 요소의 개수, dfs  (0) 2022.02.14
    '알고리즘 공부/백준 - 파이썬' 카테고리의 다른 글
    • 백준/ Silver 2 문제 , 백준 파이썬 4948, 베르트랑 공준
    • 백준/ Silver 5 문제 , 백준 파이썬 1417 , 국회의원
    • 백준/ Silver 1 문제 , 백준 파이썬 9465 , 스티커
    • 백준/ Silver 5 문제 , 백준 파이썬 11170 , 0의 개수
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바