๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]2๊ฐœ ์ดํ•˜๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ

by syLim___ 2023. 6. 22.
728x90

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์šฐ์„  ์ฒ˜์Œ ์ œ์ถœํ•œ ์ฝ”๋“œ์ด๋‹ค.

def solution(numbers):
    answer = []
    
    for i in numbers:
        j = i+1
        while True:
            num = bin(i^j)
            if num.count("1") in [1,2]:
                answer.append(j)
                break
            j += 1
    return answer

 

์ด ์ฝ”๋“œ๋กœ๋Š” ํ…Œ์ผ€ 9, 10์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

 

i+1๋ถ€ํ„ฐ ์ˆซ์ž๋“ค์„ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋ฉฐ ์ฐจ๋ก€๋กœ xor ์—ฐ์‚ฐ์„ ํ•˜๊ณ , ๋‹ค๋ฅธ ๋น„ํŠธ ์ˆ˜๊ฐ€ 1๊ฐœ ๋˜๋Š” 2๊ฐœ๋ฉด ๊ทธ ์ˆซ์ž๋ฅผ ์„ ํƒํ•ด์ฃผ์—ˆ๋‹ค.

 

์›ํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฐพ์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ํฐ ์ˆ˜์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ ๊ฒƒ ๊ฐ™์•˜๋‹ค.

 

์–ด๋–ค ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ ๊ณ„์† ๊ณ ๋ฏผํ•ด๋ดค๋Š”๋ฐ,

์ง์ˆ˜์ธ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ 1์„ ๋”ํ•ด์ค€ ์ˆซ์ž๊ฐ€ ์ •๋‹ต์ด๋‹ค ์ด์ •๋„๊นŒ์ง€๋ฐ–์— ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•˜๋‹ค.

 


์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์— ์–ด๋–ค ๋ถ„์ด ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ ์–ด๋‘์…จ๊ธธ๋ž˜, ์šฐ์„  ์ด๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ดค๋‹ค.

 

ํ•˜ ์ €๊ฑฐ ๋ณด๊ณ  ์ผ๋‹จ ์ •์งํ•˜๊ฒŒ ์—ด์‹ฌํžˆ ๊ตฌํ˜„ ํ•ด๋ดค๋‹ค.

def solution(numbers):
    answer = []
    
    for i in numbers:
        if i%2 == 0:
            answer.append(i+1)
        else:
            add = []
            for j in bin(i)[::-1]:
                if j == "0" or j=="b":
                    add.append("1")
                    break
                add.append("0")
            result = ''.join(reversed(add))
            k = int(result,2)
            answer.append(int(i) + k - k//2)
    return answer

๋ถ€์กฑํ•˜์ง€๋งŒ ์ด ์ฝ”๋“œ๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 


๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๊ตฌ๊ฒฝํ–ˆ๋Š”๋ฐ ๋‹ค๋“ค ์ฒœ์žฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค..

์Œ ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ์ˆ˜ํ•™๋จธ๋ฆฌ ์—†์œผ๋ฉด ์†”๋ธŒ ํ•˜๊ธฐ ํž˜๋“ค ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

๊ฐ€์žฅ ์œ„์— ์žˆ๋˜ ํ’€์ด์—์„œ ๋„์›€๋ฐ›์•˜๋˜ ๋Œ“๊ธ€

๋‚˜์ค‘์— ์ด ๋ฌธ์ œ ๋‹ค์‹œ ํ’€ ๋•Œ ๋˜ ํ•„์š”ํ•˜๋ฉด ๋ณด๋ ค๊ณ  ์บก์ฒ˜ํ•ด๋‘ 

 

ํ•˜ ์–ด๋ ต๋‹ค

728x90