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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Carnival7

Change Developer

코딩 테스트/삼성 기출

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

    티스토리툴바