프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설계
1. 가장 큰 돗자리의 크기를 구하기 위해 mats를 내림차순으로 정렬
2. mats 마다 반복문 수행
3. 조건에 맞게 시작지점으로부터 0~m 만큼까지의 지점들을 모두 확인
4. 이 과정에서 플래그 변수 사용(매우 자주 사용되는 방식이니 기억)
문제 풀이
def solution(mats, park):
#안되면 -1이니까 기본으로
answer = -1
#가장 큰 돗자리니까,mats를 내림차순 정렬
mats.sort(reverse=True)
park_x=len(park)
park_y=len(park[0])
#mats마다 반복문을 수행
for m in mats:
for start_x in range(park_x):
for start_y in range(park_y):
//누군가 있으면 건너뛴다.
if park[start_x][start_y]!="-1":
continue
safe = True
for cur_x in range(m):
for cur_y in range(m):
# 공원 크기를 넘어가면 배치 불가능
if start_x+cur_x>=park_x or start_y+cur_y>=park_y:
safe=False
break
# 차 있는 자리면 배치 불가능
if park[start_x+cur_x][start_y+cur_y]!="-1":
safe=False
break
#for문 더 벗어나기
if not safe:
break
if safe:
answer=m
return answer
return answer
정리
- break문이 하나의 반복문만 빠져나가므로 플래그 변수를 사용해서 하나의 반복문을 빠져나온 후 다시 확인하고 빠져나갈지 여부를 확인해 준다.
- 인덱스 초과에러를 예방하기 위해 접근 전에 크기 비교를 한다.
- 실제로 플래그 변수를 사용하는 것과 인덱스 초과를 방지하는 방식은 매우 자주 사용되니 기억하도록 하자.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / python] 베스트앨범 (0) | 2025.05.04 |
---|---|
[프로그래머스 / python] 의상 (0) | 2025.05.01 |
[프로그래머스 / swift] 달리기 경주 (0) | 2024.07.18 |
[프로그래머스 / swift] 2019 KAKAO BLIND RECRUITMENT - 후보키 (0) | 2024.07.01 |
[프로그래머스 / swift] 2020 KAKAO BLIND RECRUITMENT - 문자열 압축 (0) | 2024.06.20 |