๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/PROGRAMMERS

[python]ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋น„๋ฐ€์ง€๋„

by DevIseo 2022. 7. 25.

[python]ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋น„๋ฐ€์ง€๋„

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

 

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

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

programmers.co.kr

def solution(n, arr1, arr2):
    
    #map1๊ณผ map2๋ฅผ ํ•ฉ์น  array
    result = [[0]*n for _ in range(n)]
    #2์ง„์ˆ˜ ๋ณ€ํ™˜ํ•ด์„œ ๋„ฃ์–ด์ค„ array
    map1 = [[0]*n for _ in range(n)]
    map2 = [[0]*n for _ in range(n)]
    
    #map1 2์ง„์ˆ˜ ๋ณ€ํ™˜
    for i in range(n):
        temp = format(arr1[i],'b')
        for j in range(n):
            if len(temp)!=n:
            	#์•ž์ž๋ฆฌ 0์ด๋ฉด ๋„ฃ๊ธฐ ์œ„ํ•จ.
                temp = '0'*(n-len(temp))+temp
                map1[i][j] = temp[j]
            else:
                map1[i][j] = temp[j]
    
    #map2 2์ง„์ˆ˜ ๋ณ€ํ™˜
    for i in range(n):
        temp = format(arr2[i],'b')
        for j in range(n):
            if len(temp)!=n:
                temp = '0'*(n-len(temp))+temp
                map2[i][j] = temp[j]
            else:
                map2[i][j] = temp[j]
    
    #๋‹ค์‹œ ๋ณ€ํ™˜..
    for i in range(n):
        for j in range(n):
            if map1[i][j] == '1' or map2[i][j] == '1':
                result[i][j] = '#'
            if map1[i][j] == '0' and map2[i][j] == '0':
                result[i][j] = ' '
    
    #์ถœ๋ ฅ์„ ์œ„ํ•œ answer array์— append
    answer = []          
    for i in range(n):
        temp = ''
        for j in range(n):
            temp+=result[i][j]
        answer.append(temp)
            
    return answer

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ- ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ด์šฉํ•œ ํ’€์ด๋ฒ•!

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n):
        tmp = bin(arr1[i] | arr2[i])
        # tmp๊ฒฐ๊ณผ ex) '0b1101'
        tmp = tmp[2:].zfill(n)
        # tmp๊ฒฐ๊ณผ ex) '01101'
        tmp = tmp.replace('1','#').replace('0',' ')
        # tmp๊ฒฐ๊ณผ ex) ' ## #'
        answer.append(tmp)
    
    return answer
  • (1) or ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๊ณ , 2์ง„๋ฒ• ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. (or์—ฐ์‚ฐ์€ | , xor์—ฐ์‚ฐ์€ ^, and์—ฐ์‚ฐ์€ & )
  • (2) 2์ง„๋ฒ•( ex) '0b1101')์˜ ์•ž์— 2๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ ,
    zfill์„ ์‚ฌ์šฉํ•ด์„œ ์•ž์— 0์ด ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. 
    ๊ธ€์ž ์ˆ˜๊ฐ€ n์ด ์•ˆ๋˜๋Š” 1111์€ ์•ž์— 0์œผ๋กœ ์ฑ„์›Œ์ค˜์•ผ ํ•œ๋‹ค. zfill(n)์„ ํ•˜๋ฉด n๋งŒํผ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ์•ž์— 0์œผ๋กœ ์ฑ„์›Œ์คŒ
  • (3) 1์„ #์œผ๋กœ, 0์„ ๊ณต๋ฐฑ์œผ๋กœ ์น˜ํ™˜

๋Œ“๊ธ€