카카오

    [python] 프로그래머스 - 다단계 칫솔 판매(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    [python] 프로그래머스 - 다단계 칫솔 판매(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 판매원을 키, 추천인과 수익을 밸류로 하는 딕셔너리를 만든다. (enroll, referral) 칫솔을 판매한 사람을 선택하고, 추천인과 수익을 계속 나눈다. 💨 보통 이렇게 하면 마지막 3개의 케이스에서 시간초과가 발생한다. 그 이유는 수익을 더 이상 나눌 수 없는 상태여도 추천인을 따라서 0원의 수익을 나눠 갖는 척을 하기 때문 따라서 더 이상 수익을 나눌 수 없는 상황이 되면 반복문을 멈춰준다. 💻소스 코드 def solution(enroll, referral, seller, amount): answer = [] multistages = {'-': ['', 0]} for e, r in zip(enroll, referral): multistages[e] = [r, 0] for s, a i..

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    🤔문제 해결 한 방안의 모든 P에 대하여 차례로 주변을 탐색했다. 약간 BFS 느낌🤔 O를 만나면 계속탐색 P를 만나면 멈춘다. - 거리두기 지켜지지 않음 탐색 중 P에 대하여 거리가 2가 되면 더 이상 그 지점에서는 탐색을 멈춘다. 그러므로 탐색 중 다른 P를 만났다는 말은 거리가 2 이하이기 때문에 탈락 X는 무시 💨 파이썬으로 풀던 느낌으로 풀었다. break를 한번에 걸어주는 방법이 없나... 💻소스 코드 function solution(places) { var answer = []; var length = places[0].length; var dx = [-1, 1, 0, 0] // 상 하 좌 우 var dy = [0, 0, -1, 1] for (var place of places) { var ..

    [python] 프로그래머스 - 외벽 점검(2020 KAKAO BLIND RECRUITMENT)

    [python] 프로그래머스 - 외벽 점검(2020 KAKAO BLIND RECRUITMENT)

    🤔문제 해결 Lv 3 | 정답률: 0.6% 주어진 값의 크기가 크지 않기 때문에 완전탐색으로 해결이 가능하다. 먼저 친구를 순열로 만든다. ex) [1,2,3] 이면 [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] 외벽이 원형이므로 앞과 뒤가 이어져 있다고 생각해야 한다. 취약점도 첫번째 취약점을 먼저 갈것인가 두번째 취약점을 먼저 갈것인가... 순서를 정해서 가야한다. - 첫번 째 테스트케이스의 취약점([1, 5, 6, 10])을 배열(n=12)로 나타내면 [0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0] 위의 경우는 첫번째 취약점(1)이 가장 먼저 나오는 경우 - 다음 취약점 2가 가장 먼저 나오는 경우는 0,1을 맨뒤로 옮겨주면 된다. ..

    [python] 프로그래머스 - 경주로 건설 (2020 카카오 인턴십)

    [python] 프로그래머스 - 경주로 건설 (2020 카카오 인턴십)

    🤔문제 해결 1. visited = {} 현재위치 x, y, 현재위치에서 바로보고 있는 방향 을 키값으로, 현재위치까지 오는데 드는 비용을 벨류값으로 딕셔너리를 만든다. ( 0, 1, 2, 3 | 상 하 좌 우 ) 2. q = deque() visited와 같은 값을 가지고 BFS를 실행하기 위해 사용. ( 위치 x,y, 바라보는 방향 k, 비용 ) 3. BFS를 돌며 현재 방향 d 와 앞으로의 방향 k를 비교하여 도로건설 비용을 책정한다. 4. 끝에 도달했을 때 최소비용을 출력한다. ( 끝에 도달하는 경우가 여러번이므로 끝날 때 까지 비교해준다. ) 💨 너무 어려웠던 문제... 몇시간동안 푼거같다. 바라보는 방향을 저장하고 비교하는게 중요!! 💻소스 코드 from collections import de..

    [python] 프로그래머스 - 동굴 탐험 (2020 카카오 인턴십)

    [python] 프로그래머스 - 동굴 탐험 (2020 카카오 인턴십)

    문제 해결 1. 그래프 문제 2. 주어진 path 로 인접리스트를 만든다. 3. 주어진 order 로 딕셔너리를 만든다. (1) a 를 방문해야 b 를 방문할 수 있다. (2) a를 키, b를 밸류로 하는 딕셔너리를 만든다 | a를 방문했을 때 b를 방문할 수 있다 라는 것을 찾기 위해| (3) b를 키, a를 밸류로 하는 딕셔너리를 만든다 | b를 방문하려고 하는데 a를 이미 방문했는지 알아보기 위해| (4) a가 0인 경우(선행 조건이 0번방을 방문하는 것) 이므로 값을 0으로 해준다.) (5) b가 0인 경우(0번방을 방문하기 위해 다른 방을 방문하고 와야 하므로 처음부터 방에 들어가지 못한다.) 4. visited 배열(0과 1)을 만든다. 방문했는지 안했는지 알아보기 위해 5. 큐를 만들어 BF..

    [python] 프로그래머스 - 키패드 누르기 (2020 카카오 인턴십)

    [python] 프로그래머스 - 키패드 누르기 (2020 카카오 인턴십)

    문제 해결 1. 키패드 모양대로 2차원 배열과 현재 왼손의 위치, 오른손의 위치, 누른 손을 누적할 변수를 생성 2. 1,4,7은 왼손, 3,6,9는 오른손을 사용하여 누르고, 그 위치로 이동한다. 3. 2,5,8,0의 경우 누를 번호에서 현재 양손의 위치까지의 거리를 구해서 거리가 짧은 쪽을, 거리가 같을 경우 어느손잡이인지에 따라 그 손으로 누르고 이동한다. (1) 눌러야할 번호의 위치를 구하고 BFS 탐색을 한다. (2) 현재 손까지의 거리를 구한다. (3) 양손까지의 거리를 비교한다. 😂 난이도는 카카오 코테 Lv1. 다른 분의 풀이를 보면 1차원 배열에서 숫자는 인덱스로, 위치는 튜플 형태로 값으로 넣어서 푼다. ex) 2차원 배열 상에서0번의 위치는 3,1이고 , 1번의 위치는 0,0이다. 그..