Algorithm

[1일 3알고리즘] Day4

  • -
728x90

1. 삼총사

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

 

프로그래머스

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

programmers.co.kr

def solution(number):
    sol = 0
    for i in range(len(number)):
        for j in range(i+1, len(number)):
            for k in range(j+1, len(number)):
                if (number[i] + number[j] + number[k]) == 0:
                    sol += 1
    return sol

문제 풀이

생각해낸 풀이가 O(n^3)이라서 코테에 적절하지 않은 것 같다는 생각을 했다. (통과된 걸 보면 이걸 의도한게 맞는거 같긴 한데..) 지피티한테 물어봤을때는 해시나 투포인트 기법을 쓸 수도 있다 라고는 하는데 제시해준 코드가 틀려서 위 풀이가 맞는 거 같다.

 

 

2. 숫자 문자열과 영단어

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

 

프로그래머스

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

programmers.co.kr

처음에는 아래처럼 풀었다.

def solution(s):
    while(s.isnumeric() == False):
        if "one" in s:
            s = s.replace("one", "1")
        if "two" in s:
            s = s.replace("two", "2")
        if "three" in s:
            s = s.replace("three", "3")
        if "four" in s:
            s = s.replace("four", "4")
        if "five" in s:
            s = s.replace("	five", "5")
        if "six" in s:
            s = s.replace("six", "6")
        if "seven" in s:
            s = s.replace("seven", "7")
        if "eight" in s:
            s = s.replace("eight", "8")
        if "nine" in s:
            s = s.replace("nine", "9")
        if "zero" in s:
            s = s.replace("zero", "0")
    return int(s)

그리고 시간초과!.. 근데 while을 빼니까

def solution(s):
    s = s.replace("one", "1")
    s = s.replace("two", "2")
    s = s.replace("three", "3")
    s = s.replace("four", "4")
    s = s.replace("five", "5")
    s = s.replace("six", "6")
    s = s.replace("seven", "7")
    s = s.replace("eight", "8")
    s = s.replace("nine", "9")
    s = s.replace("zero", "0")
    return int(s)

성공! (if문은 디버깅 해보니 없어도 될 것 같아서 제거!)

dic = {"zero": "0", "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7",
       "eight": "8", "nine": "9"}


def solution(s):
    for key, value in dic.items():
        s = s.replace(key, value)
    return int(s)

게시판의 다른 솔루션을 보니 이런 방식이 훨씬 간단한 것 같다.

 

3.  [1차] 비밀지도

def solution(n, arr1, arr2):
    mapArr1 = []
    mapArr2 = []
    ansArr = []
    ans = []
    for i in range(n):
        mapArr1 = sliceArr(arr1, i, n)
        mapArr2 = sliceArr(arr2, i, n)
        for j in range(n):
            if mapArr1[j] == '0' and mapArr2[j] == '0':
                ansArr.append(' ')
            else:
                ansArr.append('#')
        ans.append(''.join(ansArr))
        ansArr.clear()

    return ans

def sliceArr(arr, i, n):
    dec = bin(arr[i])[2:]  # 0100
    mapArr = list(dec)
    while len(mapArr) != n:
        mapArr.insert(0, '0')
    return mapArr

문제 풀이

 

'Algorithm' 카테고리의 다른 글

[1일 3알고리즘] Day6  (0) 2024.04.18
[1일 3알고리즘] Day5  (0) 2024.04.17
[1일 3알고리즘] Day3  (0) 2024.04.15
[1일 3알고리즘] Day2  (0) 2024.04.12
[1일 3알고리즘] Day1  (0) 2024.04.11
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.