본문 바로가기

Coding Study

[## 프로그래머스 coding study ## : 2023.11]

Lv0. 옹알이(1) 문제(정답률 33%)

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

** 유의사항 **

  • 네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어, "woowo"는 "woo"는 발음할 수 있지만 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음
def solution(babbling):
    string = ["aya","ye","woo","ma"]
    letter = []
    letter += string
    ## 2개의 조합
    for i in string:
        for j in string:
            letter.append(i+j)
    
    ## 3개의 조합
    for i in string:
        for j in string:
            for k in string:
                letter.append(i+j+k)
                
    ## 4개의 조합
    for i in string:
        for j in string:
            for k in string:
                for l in string:
                    letter.append(i+j+k+l)
                    
    answer = 0
    for i in babbling:
        if i in letter:
            answer += 1
            
    return answer

 

Lv0. 세로 읽기 문제

문자열 my_string과 두 정수 mc가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.

 

[입출력 예]

my_string m c result
"ihrhbakrfpndopljhygc" 4 2 "happy"
"programmers" 1 1 "programmers"
def solution(my_string, m, c):
    answer = []
    for i in range(0,len(my_string),m):
        answer2 = []
        for j in my_string[i:i+m]:
            answer2.append(j)
        answer.append(answer2)
    result = []
    for i in answer:
        result.append(i[c-1])
    return ''.join(result)

 

Lv0. 글자 지우기 문제

문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요

 

my_string indices result
"apporoograpemmemprs" [1,16,6,15,0,10,11,3] "programmers"

 

def solution(my_string, indices):
    dict_ = {}
    for i in range(len(my_string)):
        dict_[i] = my_string[i]
        
    for j in indices:
        del dict_[j]
    
    answer = ""
    for k in dict_.values():
        answer += k
    return answer

 

Lv0. 정수를 나선형으로 배치하기(45%)

양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.

 

[입출력 예]

n result
4 [[1,2,3,4], [12,13,14,15], [11,16,15,6], [10,9,8,7]]
5 [[1,2,3,4,5], [16,17,18,19,6], [15,24,25,20,7], [14,23,22,21,8], [13,12,11,10,9]]

 

def solution(n):
    answer = [[0 for i in range(n)] for j in range(n)]
    
    ## 왼쪽에 부딪치면 오른쪽으로 이동
    ## 오른쪽에 부딪치면 아래로 이동
    ## 아래에 부딪치면 왼쪽으로 이동
    ## 위에 부딪치면 오른쪽으로 이동
    
    direction_x = [0,1,0,-1]
    direction_y = [1,0,-1,0]
    
    ## 초기 좌표 
    x, y = 0, 0
    direction = 0
    
    for i in range(1, (n*n)+1):
        answer[x][y] = i
        nx = x + direction_x[direction]
        ny = y + direction_y[direction]
        
        if nx >= n or nx < 0 or ny >=n or ny < 0 or answer[nx][ny] != 0:
            direction = (direction+1)%4
            nx = x + direction_x[direction]
            ny = y + direction_y[direction]
        x, y = nx, ny
    return answer