[Golang] 프로그래머스 Lv.0 소문자로 바꾸기

이지연·2024년 3월 24일

프로그래머스 - 코딩 기초 트레이닝
1) Lv0.대문자로 바꾸기

링크텍스트

문제 설명
알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.

제한사항
1 ≤ myString의 길이 ≤ 100,000
myString은 알파벳으로 이루어진 문자열입니다.

입출력 예
myString result
"aBcDeFg" "ABCDEFG"
"AAA" "AAA"

내가 푼 풀이:)

import (
	"strings"
)

func solution(myString string) string {
	str := strings.ToUpper(myString)
	return str
}

다른 사람 풀이:)

func solution(myString string) string {
    answer := make([]byte, len(myString))
    for i := 0; i < len(myString); i++ {
        if myString[i] >= 'a' {
            answer[i] = myString[i] - ('a' - 'A')
        } else {
            answer[i] = myString[i]
        }
    }
    return string(answer)
}

기초 개념 닦기

문자 인코딩
  • 컴퓨터의 문자는 숫자 코드를 사용하여 표현함
  • ASCII(정보 교환을 위한 미국 표준 코드)는 가장 일반적인 인코딩 체계 중 하나임
  • ASCII에서는 각 문자에 고유한 숫자 값이 할당됨
Golang에서는 byte의 별칭은 uint8(0 ~ 255), 1byte를 나타냄
answer[i] = myString[i] - ('a' - 'A')
  • ('a' - 'A'): 소문자 'a'와 대문자 'A'의 ASCII 값의 차이를 계산하는 표현식임
  • ASCII에서는 'a'(64) 값이 'A'(32) 값보다 큼
  • 따라서 'a'의 ASCII 값에서 'A'의 ASCII 값을 빼면 양수가 나오며, 이는 소문자와 대문자 사이의 ASCII 값의 차이를 나타냄

자기점검 체크리스트

  1. 문자열 내에서 소문자를 대문자로 변환하는 이전에 제공한 함수를 알고 있었는가?
  2. 아스키문자를 이용해서 변환시키는 방법을 알고 있는가?
  3. 위 코드가 돌아가는 방법을 이해했는가?

답변)
1.N
2.N
3.Y

profile
Everyday STEP BY STEP

0개의 댓글