Algorithm

[프로그래머스] Level1 | 비밀지도, 다트게임 - 파이썬(Python) | 2018 KAKAO BLIND RECRUITMENT

토오오끼 2021. 12. 13. 16:35
728x90
반응형

드디어 프로그래머스 레벨 1의 모든 문제를 다 풀었다!! 뿌듯-

 

- 비밀지도 -

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

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

 


이진수로 바꿀 때 bin 함수를 사용하였다. 

처음엔 2개의 리스트를 순서대로 bin 함수를 사용하여 이진수를 바꾼 후 한번 더 for문을 사용하여 1과 0을 구분하려고 했다. 하지만 이중 for문은 너무 비효율적인 것 같아 다른 방법을 찾아 보다가 bin(i|j)라는 방법을 알게 되었다.

 

정답 코드

def solution(n, arr1, arr2):
    answer = []

    for i,j in zip(arr1, arr2) :
        ans12 = str(bin(i|j)[2:])  
        ans12 = ans12.zfill(n)
        ans12 = ans12.replace('0', ' ')
        ans12 = ans12.replace('1', '#')
        answer.append(ans12)
    return answer

zip을 사용하여 리스트 2개를 묶어준 뒤 bin(i|j)로 i와 j중 하나라도 1이 있다면 1이 되도록 하여 불필요한 for문을 사용하지 않을 수 있었다.

bin 함수를 사용하면 가장 앞의 2글자는 1,0이 아니기에 슬라이싱을 해주었으며 zfill로 n만큼 자릿수를 채웠다.

이후 replace를 사용하여 공백과 #으로 대체하였다.

 


해당 문제 풀이 코드

 

GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비

알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.

github.com

 


 

- 다트게임 -

https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr


정규화를 사용하여 문제를 풀 수 있었다.

아이디어가 떠오르지 않아 꽤 애를 먹었으며 다른 사람들의 풀이를 참고하여 겨우 풀었다.

 

정답 코드

import re

def solution(dartResult):
    bonus = {'S' : 1, 'D' : 2, 'T' : 3}
    option = {'' : 1, '*' : 2, '#' : -1}
    p = re.compile("(\d+)([a-zA-Z])(\*|#)?")
    dart = p.findall(dartResult)
    for i in range(len(dart)):
        if dart[i][2] == '*' and i > 0:
            dart[i-1] *= 2
        dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]

    answer = sum(dart)
    return answer

 


해당 문제 풀이 코드

 

GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비

알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.

github.com

 

728x90
반응형