[프로그래머스] 코딩테스트 Lv0(2)

2025. 8. 9. 23:03·코딩 테스트/01. Python

1. 머쓱이보다 키 큰 사람

https://school.programmers.co.kr/learn/courses/30/lessons/120585

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

방법 1) 일반

# 방법 1) 리스트에 넣어서 나중에 len하는 방법
def solution(array, height):
    high = []    
    for i in array:
        if height < i:
            high.append(i)
    return len(high)
    
# 방법 2) 바로 수를 세는 방법
def solution(array, height):
    answer = 0
    for i in array :
        if height < i :
            answer += 1
    return answer

방법 2) 컴프리헨션 방법

def solution(array, height):
    return len([i for i in array if i > height])

2. 삼각형의 완성조건(1)

https://school.programmers.co.kr/learn/courses/30/lessons/120889

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

방법 1) 일반

def solution(sides):
    sides.sort()
    if sides[0] + sides[1] > sides[2]:
        return 1
    else:
        return 2

방법 2)  짧게 줄이기

def solution(sides):
    sides.sort()
    return 1 if sides[0] + sides[1] >sides[2] else 2

방법 3) sort안쓰고 풀기

ef solution(sides):
    return 1 if max(sides) < (sum(sides) - max(sides)) else 2

3. 배열 자르기

https://school.programmers.co.kr/learn/courses/30/lessons/120833

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

def solution(numbers, num1, num2):
    return numbers[num1:num2+1]

4.  피자 나눠 먹기(3)

https://school.programmers.co.kr/learn/courses/30/lessons/120816

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

import math

def solution(slice, n):
    return math.ceil(n/slice)

이 문제의 핵심은  피자를 원하는 조각수로 잘라준다는 건데요

그래서 사람수 / 한판의 조각수 를 해주되 소수점 부분을 올림하면  무조건 1조각 이상은 먹을 수 있는거죠.

5. 점의 위치 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120841

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

방법 1) 

def solution(dot):
    if dot[0] > 0 and dot[1] > 0:  # 둘다 양수인 경우
        return 1
    elif dot[0] < 0 and dot[1] > 0: # x좌표만 음수인 경우
        return 2
    elif dot[0] < 0 and dot[1] < 0: # 둘다 음수인 경우
        return 3
    else:
        return 4

방법 2)

def solution(dot):
    x,y = dot
    if x*y>0:
        return 1 if x>0 else 3
    else:
        return 4 if x>0 else 2

6. 배열의 유사도

https://school.programmers.co.kr/learn/courses/30/lessons/120903

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

POINT!

두 배열에서 같은 원소가 몇개인지 세기

방법 1) 사용함수: for문 + in 

def solution(s1, s2):
    count = 0
    for i in s1:
        if i in s2:
            count +=1
    return count

 

방법 2) set() : 파이썬에서 중복 없는 데이터 모음을 표현하는 자료 

def solution(s1, s2):
    return len(set(s1) & set(s2))

set 교집합

더보기

1. set(집합) 이란?

 

  • 파이썬에서 중복 없는 데이터 모음을 표현하는 자료형
  • 수학의 집합 개념과 똑같이 동작함
  • {}로 만들거나 set() 함수로 변환
a = {1, 2, 3}
b = set([2, 3, 4])
print(a)  # {1, 2, 3}
print(b)  # {2, 3, 4}

 

2. 교집합(intersection)

 

  • 두 집합에 공통으로 들어있는 원소만 모은 집합
  • 수학에서 ∩ 기호로 표시
  • 파이썬에서는 & 연산자 또는 .intersection() 메서드 사용
a = {1, 2, 3}
b = {2, 3, 4}

print(a & b)                     # {2, 3}
print(a.intersection(b))          # {2, 3}

 

7. 순서 쌍의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120836

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

POINT!

n의 약수 개수 = 순서쌍 개수

 

순서쌍:(a,b)는 숫자 2개를 순서 있게 묶은 것

예: (2,6)와 (6, 2)는 순서가 다르기 때문에 다른 쌍으로 봅니다.

 

문제에서 두 숫자의 곱이  n인 순서쌍이라함은

순서쌍에 들어갈 a,b는 n의 약수가 되어야한다는 의미로 해석이 됩니다.

 

 

방법 1)

def solution(n):
    count = 0
    for a in range (1, n+1):
        if n % a == 0:
            count +=1
    return count

방법 2) 제곱근 방식 : 속도 줄이기

def solution(n):
    answer = 0
    for i in range(1, int(n ** 0.5) + 1):
        if n % i == 0:
            answer += 2

            if i * i == n:
                answer -= 1

    return answer
  • 제곱근 방식 설명
더보기

🔍 코드 해석

for i in range(1, int(n ** 0.5) + 1):
  • n ** 0.5 → √n (제곱근)
  • int(...) + 1 → √n까지 포함해서 반복
if n % i == 0:
  • i가 n의 약수이면 (i, n//i)라는 순서쌍이 나옴
answer += 2
  • i가 약수면 (i, n//i)와 (n//i, i) 두 개 순서쌍 추가
if i * i == n: answer -= 1
  • a = b인 경우(제곱수)에는 중복으로 세었으니까 하나 빼기
    예: n=9 → (3,3)을 2개로 세면 안 되고 1개만

🧪 예시 — n=8

  • i=1 → 약수 → +2 (1,8),(8,1) → answer=2
  • i=2 → 약수 → +2 (2,4),(4,2) → answer=4
  • i=3 → 3×3=9 > 8 → 종료
    → 총 4개
  • n을 int(n**0.5)로 표현하는 이유
    • √n 방식을 쓰는 경우 : 약수 찾기, 소수 판별, 순서쌍 세기
더보기

📌사용 이유:

 

  • range(1, n+1)로 돌리면 당연히 동작합니다. 하지만 그렇게 하면 불필요하게 많은 반복을 하게 됩니다
  • int(n ** 0.5) + 1을 쓰는 이유는 속도를 줄이기 위해서입니다

📌 왜 √n까지만 확인해도 되나?

  • a × b = n이면
    a ≤ √n일 때 b ≥ √n,
    a ≥ √n일 때 b ≤ √n
  • 즉, 절반까지만 보면 나머지 절반은 자동으로 짝이 맞춰짐

예: n = 36

1 × 36
2 × 18
3 × 12
4 × 9
6 × 6
(여기서부터는 앞에서 이미 찾은 쌍이 반복됨)

 

 

'코딩 테스트 > 01. Python' 카테고리의 다른 글

[프로그래머스]코딩테스트 Lv0 (3)  (2) 2025.08.11
[프로그래머스] 코딩테스트 Lv0 (1)  (4) 2025.08.08
'코딩 테스트/01. Python' 카테고리의 다른 글
  • [프로그래머스]코딩테스트 Lv0 (3)
  • [프로그래머스] 코딩테스트 Lv0 (1)
Growth DA Log
Growth DA Log
Growth DA Log 님의 블로그 입니다.
  • Growth DA Log
    Growth DA Log님의 블로그
    Growth DA Log
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • TIS_COMPANY (6)
      • 코딩 테스트 (61)
        • 01. Python (3)
        • 02. SQL (58)
      • 데이터 분석 (53)
        • 01. BigQuery (9)
        • 02. GA4 (1)
        • 02-1. GA4를 더 잘 다루기 위한 마케팅 개.. (5)
        • 03. streamlit (5)
        • 04. Git (12)
        • 05. 데이터 엔지니어링 (3)
        • 06. 데이터 모델링 (11)
        • 07. Excel (0)
        • 08. Tableau (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테
    AARRR
    윈도우함수
    이행성
    코드잇스프린트후기
    Reset
    코딩테스트
    ROW_NUMBER
    git
    rank
    cross_join
    solvesql
    revert
    프로그래머스
    tableau
    SQL
    쿼리테스트
    DENSE_RANK
    streamlit
    tableaubootcamp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
[프로그래머스] 코딩테스트 Lv0(2)
상단으로

티스토리툴바