알고리즘/Python 코테
프로그래머스 카펫 level2
집 밖은 위험해
2023. 9. 28. 00:27
문제 링크
🤔 문제 이해 및 알고리즘 유형
알고리즘 : 완전 탐색
문제 이해 : 노란색 타일과 갈색 타일을 모두 깔았을 때 가로와 세로길이를 구하는 문제
💡 문제 해결 방법
첫번째 시도 방법
갈색 타일과 노란색 타일의 총합을 구하고 그 합의 약수를 구한 후, 가운데 값을 return
-> 가로와 세로가 중간 값이 아닌 테스트 케이스가 있었음
답지를 참고한 방법
- 노란 타일의 가로 세로 길이를 구하기
- 노란 타일의 가로 x 2 + 노란 타일의 세로 x 2 + 4 == 갈색 타일의 수 조건을 만족 할때
- answer 값을 return 한다. 이때 가로길이가 세로길이 보다 같거나 길으므로 정렬해줄 것!
💻 코드
- 첫번째 코드
total = brown+yellow
result=[]
for i in range(1,total):
if total%i==0:
result.append(i)
print(result)
l=result[len(result)//2]
r = total//l
answer = [r,l]
return answer
- 두번째 코드(수정한 코드)
answer = []
yellow_x =0
yellow_y=0
for i in range(1, yellow+1):
if yellow% i ==0:
yellow_x =int(yellow/i)
yellow_y = i
if yellow_x *2 + yellow_y*2 + 4 == brown:
answer.append(yellow_x+2)
answer.append(yellow_y+2)
return sorted(answer,reverse=True)
return answer