[코딩 공부] 14일차(2/28)

성철민·2023년 2월 28일
0

배움

목록 보기
14/42

Schedule1. 프로그래머스 스쿨

코딩테스트 연습

Python

제곱수 판별하기(Lv.0)

개요: 제곱수를 판별하는 문제

정답

def solution(n):
    for i in range(1, 1001):
        if i ** 2 == n:
            return 1
    return 2
  • 하나를 푸는 데 반복문을 1000번이나 돌아야 하는 비효율적인 풀이다
  • is_integer() : 정수 여부를 불린값으로 리턴

또다른 정답

def solution(n):
    return 1 if (n** 0.5).is_integer() else 2

개미 군단(Lv.0)

개요: 최소한의 병력을 구하는 문제

정답

def solution(hp):
    answer = 0
    answer += hp // 5
    hp -= hp // 5 * 5
    answer += hp // 3
    hp -= hp // 3 * 3
    answer += hp
    return answer
  • 더 짧은 풀이가 있을 것 같다

또다른 정답

def solution(hp):
    answer = 0
    for ant in [5, 3, 1]:
        d, hp = divmod(hp, ant)
        answer += d
    return answer
  • divmod(a, b) : a / b를 몫과 나머지로 나눠서 튜플로 출력

대문자와 소문자(Lv.0)

개요: 대문자 소문자 바꾸는 문제

정답

def solution(my_string):
    return my_string.swapcase()
  • swapcase() : 대문자와 소문자를 바꿈

문자열 정렬하기(Lv.0)

개요: 문자열 안의 숫자만 찾아서 정렬한 뒤 리스트로 출력하는 문제

정답

import re
def solution(my_string):
    return sorted(list(map(int, list(re.sub("\D","", my_string)))))
  • sorted(list) : list를 정렬한 뒤 list로 반환
  • list.sort() : list 자체를 정렬하고 반환x

n의 배수 고르기

개요: 리스트 중에 n의 배수를 골라 리스트로 출력하는 문제

정답

def solution(n, numlist):
    return [a for a in numlist if a % n == 0]
  • a / n의 나머지가 0인 numlist들을 출력

인덱스 바꾸기

개요: 문자열의 순서를 바꾸는 문제

정답

def solution(my_string, num1, num2):
    a = list(my_string)
    a[num1], a[num2] = a[num2], a[num1]
    return ''.join(a)
  • '구분자'.join(list) : list안의 값들을 구분자를 기준으로 합친다

분수의 덧셈

개요: 두 분수를 더한 값을 다시 분수로 나타내기

정답

from math import gcd

def solution(numer1, denom1, numer2, denom2):
    lcd = denom1 * denom2 // gcd(denom1, denom2)
    
    numer1 *= lcd // denom1
    numer2 *= lcd // denom2
    numer = numer1 + numer2
    
    denom = lcd // gcd(lcd, numer)
    numer //= gcd(lcd, numer)
    
    return [numer, denom]
  • math.gcd(aa, bb, cc, ...) : 최대공약수 구하는 함수
profile
developer

0개의 댓글