728x90
코딩 테스트 연습 15일&16일
프로그래머스, 영어가 싫어요.
📄 나의 코드
numbers = "onefourzerosixseven"
# print("one" in numbers) // True
# numbers.replace("one", "1")
# print(numbers.replace("one", "1").replace("four", "4"))
def solution(numbers):
answer = numbers\
.replace("zero", "0")\
.replace("one", "1")\
.replace("two", "2")\
.replace("three", "3")\
.replace("four", "4")\
.replace("five", "5")\
.replace("six", "6")\
.replace("seven", "7")\
.replace("eight", "8")\
.replace("nine", "9")
return int(answer)
print(solution(numbers))
replace 내장함수는 문자열로만 변경된다. 즉, str.replace("str1", "str2")
그래서 마지막 출력할 때, integer로 형변환해준 뒤, 출력했다.
📄 공부해볼 코드1
def solution(numbers):
for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
numbers = numbers.replace(eng, str(num))
return int(numbers)
📄 공부해볼 코드2
def solution(numbers):
r = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',\
'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
for k in r.keys():
numbers = numbers.replace(k, r[k])
return int(numbers)
프로그래머스, 겹치는 선분의 길이
📄 나의 코드
lines = [[0, 5], [3, 9], [1, 10]]
def solution(lines):
answer = 0
arr = [0] * 201
for i in lines:
for j in range(i[0], i[1]):
arr[j] += 1
for k in arr:
if k >= 2:
answer += 1
return answer
print(solution(lines))
[x,y]면 arr[x]부터 arr[y-1]까지 1개씩 채워지고
최종적으로 arr[index]값이 2 이상인 값만 count하는 식으로 로직을 짰다.
📄 공부해볼만한 코드
def solution(lines):
sets = [set(range(min(l), max(l))) for l in lines]
return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2])
'알고리즘' 카테고리의 다른 글
코딩 테스트 연습 20일 (0) | 2022.12.20 |
---|---|
코딩 테스트 연습 19일 (0) | 2022.12.19 |
코딩 테스트 연습 14일 (0) | 2022.12.14 |
코딩 테스트 연습 12일, 13일 (0) | 2022.12.13 |
타임어택 특강 (0) | 2022.12.01 |