본문 바로가기

코딩테스트

[프로그래머스] JadenCase 문자열 만들기 with Golang

반응형

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. 예를 들어, "3people unFollowed me"는 "3people Unfollowed Me"로 변환됩니다.

 

제한 조건

문자열 s의 길이는 1 이상 200 이하입니다.
문자열 s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.


문제 풀이

package main

import (
	"fmt"
	"strings"
)

func solution(s string) string {
	r := ""
	isNewWord := true

	for _, v := range s {
		if v == ' ' {
			r += " "
			isNewWord = true
			continue
		}

		if isNewWord {
			if v >= '0' && v <= '9' {
				r += string(v)
			} else if v >= 'a' && v <= 'z' {
				r += string(v - 32)
			} else if v >= 'A' && v <= 'Z' {
				r += string(v)
			}
			isNewWord = false
		} else {
			if v >= 'A' && v <= 'Z' {
				r += string(v + 32)
			} else {
				r += string(v)
			}
		}
	}

	return r
}

func main() {
	r := solution("3people unFollowed me")
	fmt.Println(r)  // Should print "3people Unfollowed Me"

	r = solution("for the last week")
	fmt.Println(r)  // Should print "For The Last Week"
}

 

코드 설명

isNewWord라는 변수를 사용하여 각 단어의 첫 문자인지 아닌지 판단합니다.
공백 문자가 나오면 isNewWord를 true로 설정합니다.
단어의 첫 문자가 숫자일 경우, 그대로 추가합니다.
단어의 첫 문자가 소문자 알파벳일 경우, 대문자로 변환하여 추가합니다.
단어의 첫 문자가 대문자 알파벳일 경우, 그대로 추가합니다.
단어의 첫 문자가 아닐 경우, 모든 알파벳을 소문자로 변환하여 추가합니다.

반응형