[Go] 이진수 더하기

2024. 8. 3. 16:20Algorithm/프로그래머스

level : 0

문제 링크 : 이진수 더하기

 

프로그래머스

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

programmers.co.kr

 

My Solution

import "fmt"

func convert(str string) int {
    result := 0
    for i := 0; i < len(str); i++{
        result *= 2
        if str[i] == 49 {
            result += 1
        }
    }
    
    return result
}

func solution(bin1 string, bin2 string) string {
    answer := convert(bin1) + convert(bin2)
    return fmt.Sprintf("%b", answer)
}

 

 

풀이방법

먼저 convert라는 함수를 사용하여 2진수의 값을 나타내는 string을 10진수 int로 변환해주었다. 그리하여 bin1과 bint2을 더한 값을 Sprintf을 통하여 2진수 string으로 변환해서 return 하였다.

string "0"은 ASCII 코드로 48이고 string "1"은 ASCII 코드로 49이기에 49일 때만 1을 더해주면 된다.

방금 생각한 거지만 수식을 한 줄로 쓸 수 있었다. 다만 유의할 점은 string이 바뀌면 int가 아닌 다른 uint8나 int32와 같이 다른 타입으로 바뀌기 때문에 앞에 int로 붙여야한다.

result = 2 * result + int(str[i]) - 48

2진수를 표현한 string이기에 result를 0으로 시작하고 string의 앞 부분 읽으며 result에 2를 곱하고 1이면 1 더해주는 식을 사용하면 2진수를 표현한 string을 int로 쉽게 변환할 수 있다

 

 

 

느낀점

VScode에서는 알아서 formatting해주니까 더 깔끔하고 일관성이 있어 보기 편하지만 코딩테스트 환경은 아니어서 아쉬웠다.

go를 익히기 위해서는 코딩테스트로 연습하는 것이 정말 도움이 많이 된다. 물론 한계는 있지만 os나 외부 시스템을 연동하는 부분들을 제외한다면 기본 문법이나 라이브러리와 같은 부분은 정말 빨리 익숙해진다. 물론 혼자 프로젝트를 하는 것도 많은 부분에서 도움이 된다.

둘 다 같이 한다면 더 효율이 좋을 것이다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Go] qr code  (0) 2024.08.01
[JavaScript] 혼자 놀기의 달인  (0) 2023.04.22
[Python] 숫자 짝꿍  (0) 2022.10.20
[JavaScript] 단어 변환  (0) 2022.09.26
[JavaScript] 다음 큰 숫자  (0) 2022.09.25