[코딩테스트 입문]Day13
컨트롤 제트
문제 설명
숫자와 “Z”가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 “Z”가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 “Z”로 이루어진 문자열 s
가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤
s
의 길이 ≤ 200 - -1,000 <
s
의 원소 중 숫자 < 1,000 s
는 숫자, “Z”, 공백으로 이루어져 있습니다.s
에 있는 숫자와 “Z”는 서로 공백으로 구분됩니다.- 연속된 공백은 주어지지 않습니다.
- 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
s
는 “Z”로 시작하지 않습니다.s
의 시작과 끝에는 공백이 없습니다.- “Z”가 연속해서 나오는 경우는 없습니다.
입출력 예
s | result |
---|---|
“1 2 Z 3” | 4 |
“10 20 30 40” | 100 |
“10 Z 20 Z 1” | 1 |
“10 Z 20 Z” | 0 |
“-1 -2 -3 Z” | -3 |
문제 풀이
def solution(s):
s = list(s.split())
value = 0
for i, v in enumerate(s):
if v == "Z":
value -= int(s[i-1])
else:
value += int(v)
return value
배열 원소의 길이
문제 설명
문자열 배열 strlist
가 매개변수로 주어집니다. strlist
각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
strlist
원소의 길이 ≤ 100 strlist
는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.
입출력 예
strlist | result |
---|---|
[“We”, “are”, “the”, “world!”] | [2, 3, 3, 6] |
[“I”, “Love”, “Programmers.”] | [1, 4, 12] |
문제 풀이
def solution(strlist):
return [len(i) for i in strlist]
중복된 문자 제거
문제 설명
문자열 my_string
이 매개변수로 주어집니다. my_string
에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
my_string
≤ 110 my_string
은 대문자, 소문자, 공백으로 구성되어 있습니다.- 대문자와 소문자를 구분합니다.
- 공백(“ “)도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
my_string | result |
---|---|
“people” | “peol” |
“We are the world” | “We arthwold” |
문제 풀이
def solution(my_string):
new = ''
for i in my_string:
if i not in new:
new += i
return new
def solution(my_string):
return ''.join(dict.fromkeys(my_string))
my_string값들을 딕셔너리의 키로 만들어주면 중복을 허용하지 않는 키의 성질 덕에 중복이 제거되어 출력됩니다.
삼각형의 완성조건(1)
문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides
이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
sides
의 원소는 자연수입니다.sides
의 길이는 3입니다.- 1 ≤
sides
의 원소 ≤ 1,000
입출력 예
sides | result |
---|---|
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
문제 풀이
def solution(sides):
sides = sorted(sides)
return 2 - int(sides[2]< sides[0] + sides[1])
def solution(sides):
return 1 if max(sides) < (sum(sides) - max(sides)) else 2
댓글남기기