Algorithm 67

[프로그래머스]_Level 1_문자열 다루기 기본_파이썬

2021.09.10 def solution(s): if not (len(s) == 4 or len(s) == 6): return False else: if not s.isdigit(): return False return True 받은 문자열의 길이를 if문을 통해 제한한다. word = 'python3' print(len(word)) # 7 if not (len(s) == 4 or len(s) == 6): return False isdigit()을 이용해 모든 문자열이 숫자로 구성되어있는지 확인한다. isdigit() 문자열 구성이 모두 숫자인지 확인하는 메서드 if not s.isdigit(): return False 위의 두 조건을 만족하면 True를 출력한다. def solution(s): if ..

[프로그래머스]_Level 1_서울에서 김서방 찾기_파이썬

2021.09.05 def solution(seoul): return f'김서방은 {seoul.index("Kim")}에 있다' index() index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다. f 문자열 포매팅 파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다. format 함수를 사용한 포맷팅 def solution(seoul): return '김서방은 {}에 있다'.format(seoul.index("Kim"))

[프로그래머스]_Level 1_소수 찾기_파이썬

2021.09.05 def solution(n): answer = [i for i in range(2, n + 1)] for i in range(2, int(n ** 0.5) + 1): if i in answer: answer = list(set(answer) - set(range(i * 2, n + 1, i))) return len(answer) 백준 1929번에서 구현했던 에라토스어쩌구를 이용해서 소수 판별 후, 소수로 리스트를 만들어 개수를 세는 코드를 작성했다. 한 눈에 봐도 지저분하다. def solution(n): def is_prime(num): if num == 1: return False else: for i in range(2, int(num**0.5)+1): if num % i == ..

[프로그래머스]_Level 1_수박수박수박수박수박수?_파이썬

2021.09.05 def solution(n): answer = '수박' * (n // 2 + 1) return answer[:n] 처음 코드는 홀수번째는 '수'를 넣고 짝수번째는 '박'을 넣도록 코드를 짰다. def solution(n): answer = '' word_odd = '수' word_even = '박' for i in range(n): if i % 2 == 0: answer += word_odd else: answer += word_even return answer 뭔가.......썩 내키지 않아서 '수박'을 여러개 넣은 다음 자르는 것도 나쁘지 않을 것 같았다. def solution(n): answer = '수박' * n return answer[:n] n이 커지면 너무 쓸데없을 것 ..

[프로그래머스]_Level 1_시저 암호_파이썬

2021.09.05 def solution(s, n): s = list(s) for i in range(len(s)): if s[i].isupper(): s[i]=chr((ord(s[i]) - ord('A') + n) % 26 + ord('A')) elif s[i].islower(): s[i]=chr((ord(s[i]) - ord('a') + n) % 26 + ord('a')) return "".join(s) 백준 11654번 문제에서 사용한 ord()와 chr()를 이용했다. ord() 문자의 유니코드 값을 돌려주는 함수. chr() 문자의 유니코드 값을 돌려주는 함수. 우선 받은 문자열을 리스트로 변환하고 s = "a B z" s = list(s) # ['a', ' ', 'B', ' ', 'z'] f..

[프로그래머스]_Level 1_약수의 합_파이썬

2021.09.04 def solution(n): return sum([i for i in range(1, n+1) if n % i == 0]) range()의 범위를 n/2로 줄이면 성능이 더 좋아짐. Ex) 20210904의 약수를 구해보면 아래와 같이 64개의 약수가 나옴 (8자리수 넘어가면 16램도 못버텨서..ㅎ) n = 20210904 n_list = [i for i in range(1, n+1) if n % i == 0] print(n_list) ''' [1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 18, 21, 24, 27, 28, 36, 42, 54, 56, 63, 72, 84, 108, 126, 168, 189, 216, 252, 378, 504, 756, 1512, 1336..

[프로그래머스]_Level 1_이상한 문자 만들기_파이썬

2021.09.04 def solution(s): s = s.lower().split() answer = '' for i in s: for j, k in enumerate(i): if j % 2 == 0: k = k.upper() answer += k answer += ' ' return answer[:-1] 정확성 : 31.3 아마도 split(" ")을 넣지 않아서 정확성이 떨어지지 않았나 싶음... def solution(s): s = s.split() answer = [] for i in range(len(s)): word = '' for j in range(len(s[i])): if j % 2 == 0: word += s[i][j].upper() else: word += s[i][j].lower..