Carnival7
Change Developer
Carnival7
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자바의 정석
    • 프로그래밍 언어별 tools
      • 파이썬
      • 자바
    • 코딩 테스트
      • 백준 강의 기초편
      • 백준 강의 연습편
      • 백준 강의 문제편
      • 삼성 기출
      • 백준 - 일반
      • 카카오 기출
      • 프로그래머스 - 일반
      • 코테 풀이 Tools
    • CS
      • Network
      • 운영체제
      • 알고리즘
      • DB
    • Web_Backend
      • Spring
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
      • 스프링 핵심 원리 - 기본편
    • DevOps
    • IT 업무 지식
      • 인프라
      • 클라우드
    • 자격증
      • AWS - CLF
      • 정처기 - 실기
    • 생각 정리

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩테스트 #삼성기출 #구현 #시뮬레이션
  • ci/cd
  • 삼성기출 #2023 #상반기
  • DMZ
  • DevOps
  • 프로그래머스 #카카오기출 #레벨2
  • 스프링 #인터셉터 #AOP #필터
  • 슬라이딩 윈도우 #덱
  • Github Actions
  • 삼성기출 #백준강의문제편
  • 스프링 #AOP
  • 슬라이딩 윈도우
  • 알고리즘 #백준강의기초편 #코딩테스트
  • 스프링 부트 무중단 웹 서비스
  • code deploy
  • nginx

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Carnival7
코딩 테스트/삼성 기출

2018상_디버깅(백준 15684.사다리 조작.py)

코딩 테스트/삼성 기출

2018상_디버깅(백준 15684.사다리 조작.py)

2024. 6. 16. 14:33

https://www.codetree.ai/training-field/frequent-problems/problems/debugging/description?page=3&pageSize=20

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

import sys
from copy import deepcopy
from itertools import combinations

input=sys.stdin.readline
MAX=int(1e9)

n,m,h=map(int,input().split())

a=[[0]*(n+1) for _ in range(h+2)]

ans=MAX

for _ in range(m):
    x,y=map(int,input().split())
    a[x][y]=1
    a[x][y+1]=2

# 가로선 넣을 자리 후보 뽑기
cand=[]
for x in range(1,h+1):
    for y in range(1,n):
        # 해당 칸이나 오른쪽 칸에 1 또는 2가 있을 경우는 제외
        if 1<=a[x][y]<=2 or 1<=a[x][y+1]<=2:
            continue
        cand.append([x,y])

# i열이 i가 나오는 지 검사
def check(a):
    result=True

    for y in range(1,n+1):
        col=y
        # 아래로 내려가며 탐색
        for x in range(1,h+1):
            # 1인 경우 오른쪽
            if a[x][y]==1:
                y+=1
            # 2인 경우 왼쪽
            elif a[x][y]==2:
                y-=1
        if y!=col:
            result=False
            break

    return result

# 사다리 추가 안 해도 될 시 0 출력
if check(a):
    print(0)
    sys.exit(0)

# 후보들 중 1~3개를 뽑는 모든 조합의 경우의 수 탐색
for num in range(1,4):
    for comb in combinations(cand,num):
        # 이번 조합의 칸들 채우기
        for x,y in comb:
            a[x][y]=1
            a[x][y+1]=2
        # i열이 i가 나오면 num 출력
        if check(a):
            print(num)
            sys.exit(0)
        # 이번 조합 칸들 비우기
        for x, y in comb:
            a[x][y]=0
            a[x][y+1]=0

print(-1)

'코딩 테스트 > 삼성 기출' 카테고리의 다른 글

2018상_드래곤 커브(백준. 15685.드래곤 커브)  (0) 2024.06.22
2018상_이상한 체스(백준 15684.사다리 조작)  (1) 2024.06.16
2017하_보도블럭  (0) 2024.06.09
2017하_조삼모사  (0) 2024.06.09
2017상_외주 수익 최대화하기  (0) 2024.06.08
    '코딩 테스트/삼성 기출' 카테고리의 다른 글
    • 2018상_드래곤 커브(백준. 15685.드래곤 커브)
    • 2018상_이상한 체스(백준 15684.사다리 조작)
    • 2017하_보도블럭
    • 2017하_조삼모사
    Carnival7
    Carnival7

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.