1-4

뚜니·2024년 6월 24일
0

Algorithm

목록 보기
5/23

대소문자 바꿔서 출력하기

문제
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

package main

import "fmt"

func main() {
    var s1 string
    fmt.Scan(&s1)
    // 문자를 하나씩 꺼내서
    for _, s := range s1 {
    	문자의 아스키코드가 97보다 작으면 대문자!
        if s < 97 {
        	// s + 32 를 해서 소문자로 출력
            fmt.Print(string(s + 32))
        } else {
        	// 나머지는 소문자, -32를 해서 대문자로 출력
            fmt.Print(string(s - 32))
        }
    }
}

// 1. s1 aBcD 를 a, B, c, D 로 분해
// 2. a가 소문자면 대문자로 변환(-32), a가 대문자면 소문자로 변환(+32)
// 3. B가 소문자면 대문자로 변환(-32), B가 대문자면 소문자로 변환(+32)
// 4. c가 소문자면 대문자로 변환(-32), c가 대문자면 소문자로 변환(+32)
// 5. 변환한 문자열을 합쳐서 (연결해서) 출력

go 에서 string은 rune 배열

	unicode-rune
	for _, s := range s1 {
    	// 소문자인지 확인
		if unicode.IsLower(s) {
		// 대문자로 출력
			fmt.Print(string(unicode.ToUpper(s)))
		} else {
		// 소문자가 아니면 소문자로 출력
        	fmt.Print(string(unicode.ToLower(s)))
		}
	}
    

	strings - string
	//fmt.Println(strings.ToLower(s1)) 전체 소문자로 출력
	//fmt.Print(strings.ToUpper(s1)) 전체 대문자로 출력
	for _, s := range s1 {
		if unicode.IsLower(s) {
			fmt.Print(strings.ToUpper(string(s)))
		} else {
			fmt.Print(strings.ToLower(string(s)))
		}
	}
package main

import "fmt"

func main() {
    var s1 string
    fmt.Scan(&s1)
    stringCase := ""
    for _, s := range s1 {
        if s < 97 {
            stringCase = string(s + 32)
        } else {
            stringCase = string(s - 32)
        }

        fmt.Printf("%s", stringCase)
    }
}

0개의 댓글