상세 컨텐츠

본문 제목

[coding_test] 5/8일 카카오 인턴쉽 코딩테스트

coding/coding_test

by golduny_zoo 2021. 5. 10. 10:24

본문

728x90

총 5문제가 출제 되었지만 아직 실력부족으로 나는 2문제만 완벽하게 풀어냈다.

생각보다 문제들은 어려웠고.. 알고리즘을 많이 알게되면 풀어낼 수 있을 것같다는 생각이 들어 계속 공부를 하면 점점 문제를 풀어낼 수 있을 꺼라는 자신감 혹은 자만감 생기게 되었다.  

1 번문제  -- 문자열 바꾸기

'one4twothree' --> 1423

'1234' --> 1234

로 변환하는 문제가 나왔다. 

def solution(s):
    num_dict = {
    0 :'zero',
    1 : 'one',
    2 : 'two',
    3 : "three",
    4 : 'four',
    5 : 'five',
    6 : 'six',
    7 : 'seven',
    8 : 'eight',
    9 : 'nine'
    }
    for i, value in num_dict.items():
        if s.find(value) != -1:
            s =s.replace(value, str(i))
    answer = int(s)
    return answer

 

 

2번 문제

사회적 거리두기로 

방역과 관련된 문제가 나왔고, 

방역은 0% 혹은 100%로 나뉠 수 있는데 

 

5X5 배열의 시험장에 사람들이 앉을 경우

 

맨허튼 거리가 2이하일 경우 

1일땐 방역이 0으로 실패

2일땐 배치에 따라 방역의 성공이 달라지는 형식이였다. 

자세한 사항은 나중에 문제가 나오면..

def manhattan_distance(pt1, pt2):
    distance = 0
    for i in range(len(pt1)):
        distance += abs(pt1[i] - pt2[i])
    return distance
def check_Quarantine(place):
    from itertools import combinations
    spot_list = []
    for x, i in enumerate(place):
        for y, j in enumerate(i):
            if j == 'P':
                spot_list.append((x,y))
                
    for i in combinations(spot_list,2):
        x,y = i
        if manhattan_distance(x,y) ==1 :
            return 2
            break
        elif manhattan_distance(x,y) ==2 :
            if x[0] == y[0] :
                if place[x[0]][int((x[1]+y[1])/2)] =='X':
                    pass
                else :
                    return 2
            elif x[1] ==y[1]:
                if place[int((x[0]+y[0])/2)][x[1]] =='X':
                    pass
                else :
                    return 2


            # 대각선 상
            else:
                if (place[y[0]][x[1]] != 'X') or place[x[0]][y[1]] !='X':
                    return 2
                
def solution(places):
    result=[]
    for place in places:
        s = check_Quarantine(place)
        if s is None:
            s = 1
        else:
            s = 0
        result.append(s)
    return result

'coding > coding_test' 카테고리의 다른 글

[coding_test]체육복  (0) 2021.05.11
[coding_test]모의고사  (0) 2021.05.11
[coding_test]내적  (0) 2021.05.10
[coding_test]폰켓몬  (0) 2021.05.08
[coding_test]소수 만들기  (0) 2021.05.08

관련글 더보기