코딩테스트/🕊️프로그래머스

LEVEL 1. 이상한 문자 만들기

@soohh 2022. 9. 14. 10:47

 

🟪 나의 구현 스케치

처음에는 split으로 단어를 나누어 짝수번째 index의 문자열은 대문자로 홀수번째 index의 문자열은 소문자로 변경했다. 하지만 공백 개수를 고려하지 않아 테스트 케이스는 통과했으나 제출 시 실패했다. 

다시 처음부터 구현을 했다. count로 각 단어의 index를 표시하는데 사용했고, isspace로 공백문자이면 공백을 더하고 count를 0으로 초기화시켜 다음 단어의 index를 처음 시작하도록 했다.

 

🟪 나의 구현 코드

처음 코드 - 공백 개수 고려 x

def solution(s):
    answer = ""
    slist = s.split()
    for word in slist:
        for i in range(len(word)):
            if i%2 == 0:
                answer += word[i].upper()
            else:
                answer += word[i].lower()
        answer += " "
    return answer[0:-1]

나중 코드 - 공백 개수 고려 o

def solution(s):
    count=0
    answer=""
    for i in range(len(s)):
        if s[i].isspace():
            answer += " "
            count=0
        else:
            if count%2==0:
                answer += s[i].upper()
            else:
                answer += s[i].lower()
            count+=1
    return answer

 

🟪 다른 사람의 구현 코드

map(함수, 매개변수)를 이용한 방법이다. 공백을 포함한 숫자, 문자 모두 각 자리의 매개변수 s.split(" ")가 lambda함수로 전달된다.

여러 함수들이 조합되어 있는 구현 방법이다. 숏코딩이 어렵다면 이해만 하고 넘어가도 괜찮다.

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(" ")))

 

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr