

코딩테스트 연습 - 멀쩡한 사각형 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
def gcb_aksu(num1, num2):
answer=0
set_1 = set()
set_2 = set()
for i in range(1, int(num1**(1/2))+1):
if num1%i==0:
set_1.add(i)
if i**2!=num1:
set_1.add(num1//i)
for i in range(1, int(num2**(1/2))+1):
if num2%i==0:
set_2.add(i)
if i**2!=num2:
set_2.add(num2//i)
answer = max(set_1&set_2)
return answer
def solution(w,h):
answer = 0
common_point = gcb_aksu(w,h)
answer = w*h - (((w//common_point)+(h//common_point)-1)*common_point)
return answer
1) 최대 공약수로 교점의 갯수를 구하고
2) 사용할수 없는 사각형수 (가로+세로-1) * 최대 공약수
시간 복잡도
1. for i in range(1, int(num1**(1/2))+1) : 입력 크기의 제곱근을 순회 [ O(√n) ]
2. 내부 연산은 상수시간 [ O(1)
3. 최종 연산도 상수시간 [ O(1)
'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글
| 광물 캐기 (0) | 2024.07.05 |
|---|---|
| 우박수열 정적분 (0) | 2024.07.04 |
| 문자열 압축 (2) | 2024.07.02 |
| Softeer 연습문제(2단계) - 바이러스 (0) | 2024.06.25 |
| Softeer 연습문제(2단계) - 전광판 (2) | 2024.06.25 |