TIL_230906

Sol Lee·2023년 9월 19일
0

오늘 한 일

프로그래머스 알고리즘 문제 풀기

# 이상한 문자 만들기

# 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 
# 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

# 내 코드
def solution(s):
    s = s.split(" ")

    answer = []
    for j in s:
        word = [letter.upper() if i % 2==0 else letter.lower() for i,letter in enumerate(list(j))]
        answer.append(''.join(word))

    return ' '.join(answer)

# 다른 사람 코드 
def toWeirdCase(s):
    return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))

## 아직도 줄이는 게 익숙치 않다.



# 삼총사

# 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 
# 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 
# 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 
# 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 
# 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 
# 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.
# 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.

# 내 코드
from itertools import *

def solution(number):
    answer = 0
    comb = list(combinations(number, 3))
    for i in comb:
        if sum(i) == 0:
            answer += 1
    return answer



# 크기가 작은 문자열

# 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 
# 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
# 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 
# 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.

# 내 코드
from itertools import *

def solution(t, p):
    answer = 0
    num = len(p)
    for i in range(len(t)-num+1):
        if t[i:i+num] <= p:
            answer += 1
    return answer
profile
직업: 개발자가 되고 싶은 오레오 집사

0개의 댓글