[Programmers] 문자열 다루기 기본 / 서울에서 김서방 찾기 / 소수 찾기 / 수박수박수박수박수박수? (python)

🌴 문자열 다루기 기본

문제 링크

해결 전략

s : 길이가 1 이상 8 이하인 문자열

  1. 문자열의 길이가 4 or 6 인지 확인
  2. 문자열이 숫자로만 구성되어 있는지 확인
  3. 위 두 조건을 모두 만족할 때 True, 아니면 False return

Initial Source Code

import re
def solution(s):    
    if (len(s) in [4, 6]) and s == ''.join(re.findall('\d+', s)):
        return True
    else:
        return False

조건들을 합쳐서 간결하게 바꾼 코드는 다음과 같다.

Final Source Code

import re
def solution(s):    
    return len(s) in [4, 6] and s == ''.join(re.findall('\d+', s))

# s == ''.join(re.findall('\d+', s)) 대신 s.isdigit() 사용 가능


🌴 서울에서 김서방 찾기

문제 링크

해결 전략

seoul : 길이 1 이상 1000 이하인 배열
seoul의 원소 : 길이 1 이상 20 이하인 문자열

  1. Kim은 반드시 seoul 안에 포함되어 있으므로(given) 김서방(Kim)의 index return

Source Code

def solution(seoul):
    answer = '김서방은 ' + str(seoul.index('Kim')) +'에 있다'
    return answer


🌴 소수 찾기

문제 링크

해결 전략

Source Code

# https://ychae-leah.tistory.com/190

def solution(n):
    sieve = [0] * (n+1)

    m = int(n ** 1/2)
    for i in range(2, m + 1): #n의 최대 약수는 under sqrt(n) (by 에라토스테네스의 체)
        if sieve[i] == 0: #i가 소수
            for j in range(2*i, n+1, i): #i이후 i의 배수를 1로
                sieve[j] = 1

    return sieve[2:].count(0)  #0,1을 제외한 소수 개수


🌴 수박수박수박수박수박수?

문제 링크

해결 전략

n : 길이 10,000이하인 자연수

  1. 문자열 n을 2로 나눈 몫만큼 '수박'을 반복한 후
  2. 홀수이면 '수'를 문자열 마지막에 추가

Source Code

def solution(n):
    return '수박'*(n//2)+'수'*(n%2)

좋은 웹페이지 즐겨찾기