Algorithm/Programmers80 [프로그래머스] 행렬 테두리 회전하기 / 파이썬 / Python 💡solutions ) 💬 단순히 구현하는 시뮬레이션 문제 💬 테두리 영역의 숫자들을 회전시키기 위해 for문에서 인덱스 범위를 잘 구분하는 것이 중요함 💬 Python에선 두 변수를 한번에 swap이 가능하다 -> e.g) a,b = b,a로 a와 b값 교환 가능 👨💻code ) def solution(rows, columns, queries): arr = [[0]*columns for _ in range(rows)] cnt = 1 result = [] for i in range(rows): for j in range(columns): arr[i][j] = cnt cnt += 1 for r1, c1, r2, c2 in queries: min_v = 10001 before = arr[r1][c1-1] .. 2021. 8. 8. [프로그래머스] 배달 / 파이썬 / Python / Dijkstra 💡solutions ) 💬 다익스트라 알고리즘을 사용하여 최단 거리를 구하는 로직 💬 처음 시작하는 노드 1에서의 최단 거리는 0으로 초기화 💬 인접행렬 만들고 -> heappush를 통해 최단 거리 순으로 정렬 -> 최단 거리가 될 때마다 거리를 저장해 놓는 리스트인 dis 업데이트 👨💻code ) import heapq def dijkstra(dis, adj): heap = [] heapq.heappush(heap, [0, 1]) while heap: cost, node = heapq.heappop(heap) for c, n in adj[node]: if cost + c < dis[n]: dis[n] = cost + c heapq.heappush(heap, [cost + c, n]) def solu.. 2021. 6. 14. [프로그래머스] 합승 택시 요금 / 파이썬 / Python / Dijkstra / 2021 KAKAO BLIND RECRUITMENT/ 카카오 코테 💡solutions ) 💬 다익스트라(Dijkstra) 알고리즘을 사용하여 문제를 풀었다. 💬 다음 두 가지 경우를 모두 포함하여 최소 비용을 구해야 하는 문제다. (1) 무지와 어피치가 따로 택시를 타고 가능 경우 (2) 특정 지점까지 함께 이동 후 각자 목적지까지 가는 경우 -> 이때 둘 중 한사람이 나머지 한사람을 데려다 주고 본인 집으로 이동하는 경우도 포함된다. 💬 카카오 테크 블로그에 따르면, 다익스트라와 플로이드와샬 두 가지 방법으로 해결 가능하다. 추후 플로이드와샬로도 풀어봐야겠다. 👨💻code ) import heapq def dijkstra(adj, num, s, e): heap = [] heapq.heappush(heap, [0, s]) INF = float('inf') dist =.. 2021. 2. 4. [프로그래머스] 순위 검색 / 파이썬 / Python / 2021 KAKAO BLIND RECRUITMENT / 카카오 코테 기출 💡solutions ) 💬 해당 문제는 정확성과 효율성 모두 만족해야 하는 문제다. 💬 처음 작성했던 코드는 정확성만 통과했고, 효율성을 만족하지 못했다. for문을 통해 주어진 query정보와 info를 모두 비교하여 만족하는 지원자가 몇 명인지 구하면 정확성은 쉽게 풀 수 있다. 💬 문제는 효율성. 혼자서 해결하지 못해서 '카카오 테크 블로그'와 다른 분의 풀이를 참고하며 해결 방법을 생각해봤다. 💬 먼저, 해시맵을 활용해 지원자들의 정보를 미리 저장해두는 로직이 필요했다. -> 주어진 info 정보를 key값으로 점수를 value로 하여 딕셔너리에 저장 -> 하나의 info에 총 16가지의 경우의 수가 만들어진다. -> info에서 '-'를 고려하는 경우는 따로 '-'문자를 넣지 않고 주어진 inf.. 2021. 2. 1. [프로그래머스] 신규 아이디 / 파이썬 / Python / 2021 KAKAO BLIND RECRUITMENT / 카카오 코테 기출 💡 solutions ) 💬 시뮬레이션 문제로, 주어진 7단계를 차례대로 코드로 구현하면 해결할 수 있는 문제 👨💻 code ) def solution(new_id): chk_letter = ['-', '_'] new_id = new_id.lower() # 소문자 변환 res = '' for item in new_id: if item.isdigit(): res += item elif item.isalpha(): res += item elif item in chk_letter: res += item elif item == '.': # '.'이 2번 이상인지 확인 if len(res) != 0: if res[-1] != '.': res += '.' else: res += '.' # 처음과 끝 마침표 확인 .. 2021. 1. 31. [프로그래머스] 문자열 다루기 기본 / 자바스크립트 / JavaScript 💡solutions ) 💬 parseInt 사용 -> 문자열을 정수로 바꿔주는 메소드 💬 isInteger 사용 -> 전달된 값이 정수인지 확인하는 메소드 🎫code ) function solution(s) { var answer = false; if(s.length === 4 || s.length === 6){ for(var i=0; i 2021. 1. 2. 이전 1 ··· 3 4 5 6 7 8 9 ··· 14 다음