전체 글
-
[백준] 배열 돌리기 4 (17406번) Swift알고리즘 2021. 10. 7. 00:29
문제 내용 N X M 사이즈의 배열이 주어진다. 회전 연산 K 개가 주어지고 주어진 회전 연산으로 회전을 하여 행의 최솟값을 구해라 회전 연산은 모두 한 번씩 사용, 순서는 임의로 정해도 된다. (모든 경우의 수로 하라는 뜻) 제한사항 3 ≤ N, M ≤ 50 1 ≤ K ≤ 6 1 ≤ A[i][j] ≤ 100 1 ≤ s 1 ≤ r-s < r < r+s ≤ N 1 ≤ c-s < c < c+s ≤ M 전체 코드 // 1. size (N, M, K 입력 받기) let size = readLine()!.split { $0 == " " }.map { Int(String($0))! } // 2. 원본 배열 var originArr: [[Int]] = Array(repeating: [], count: size[0])..
-
[프로그래머스] 게임 맵 최단거리 Javascript자바스크립트 2021. 10. 6. 15:48
문제 내용 maps 배열이 주어짐.(0, 0) 에서 출발해서 (n -1, m-1) 까지 최단거리를 찾아라. 최단거리가 없다면 -1 을 return 해라. 제한사항 maps는 n x m 크기의 게임 맵의 상태가 들어있는 2차원 배열로, n과 m은 각각 1 이상 100 이하의 자연수입니다. n과 m은 서로 같을 수도, 다를 수도 있지만, n과 m이 모두 1인 경우는 입력으로 주어지지 않습니다. maps는 0과 1로만 이루어져 있으며, 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타냅니다. 처음에 캐릭터는 게임 맵의 좌측 상단인 (1, 1) 위치에 있으며, 상대방 진영은 게임 맵의 우측 하단인 (n, m) 위치에 있습니다. 전체 코드 function solution(maps) { // 1. n 과 m 을..
-
[프로그래머스] 전력망을 둘로 나누기 (위클리 챌린지 9주차) Javascript알고리즘 2021. 10. 5. 12:49
문제 내용 하나의 트리 형태로 값이 주어진다. 이 중에서 하나의 연결된 edge 를 자르면 2개의 트리가 구성이 된다. 나눠진 2개의 트리의 각각 node 의 수가 있는데 그 수 끼리의 차를 구해라. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의 v1번 송전탑과 v2번 송전탑이 전선으로 연결되어 있다는 것을 의미합니다. 1 ≤ v1 < v2 ≤ n 입니다. 전력망 네트워크가 하나의 트리 형태가 아닌 경우는 입력으로 주어지지 않습니다. 전체 코드 function solution(n, wires) { // 1. 답을 저장할 answer 를 생성함 (정답은 최소값..
-
var, let, const 차이점 (블록 스코프, 함수 스코프)자바스크립트 2021. 10. 4. 22:09
var 와 let 의 차이점 let 은 여러 번 선언할 수 없다. let hogumachu = "hogumachu"; let hogumachu = "not hogumachu"; // ReferenceError: Identifier 'hogumachu' has already been declared 이미 let 으로 선언되어 있기 때문에 에러가 발생한다. var 는 가능하다. let 은 선언하기 전에 사용이 불가능하다. console.log(hogumachu); // ReferenceError: Cannot access 'hogumachu' before initialization let hogumachu = "hogumachu"; 초기화 되기 전에 사용을 하여서 에러가 발생한다. console.log(ho..
-
[프로그래머스] 숫자의 표현 Javascript알고리즘 2021. 10. 4. 17:57
문제 내용 자연수 n 을 연속한 자연수들의 합으로 표현해라. 예를 들어, n = 15 라고 했을 때 15 = 1 + 2 + 3 + 4 + 5 15 = 4 + 5 + 6 15 = 7 + 8 15 = 15 이렇게 나타낼 수 있다. 전체 코드 function solution(n) { // 1 let result = 0; // 2 let i = 1; // 3 let j = 0; // 4 for (; i = n * 2) { break; } } // 5 for (; i = n 이라 표현했지만 읽기 쉽게 양 쪽에 2를 곱하여서 i * (i + 1) >= n * 2 라고 표현했다. n 은 15 이므로 i * (i + 1) 이 15 * 2 이상 일 때 반복문이 종료된다. i = 5 일때 값이 30 이 되므로 종료된다. ..
-
[프로그래머스] 같은 숫자는 싫어 Javascript알고리즘 2021. 10. 4. 17:04
문제 내용 배열 arr 은 숫자 0 ~ 9 로 이루어져 있음.배열에서 연속적으로 나타나는 숫자는 하나만 남기고 모두 제거하고순서가 유지되어야 함. 예를 들어, arr return [3, 3, 3, 2, 2, 1] [3, 2, 1] 이렇게 순서도 유지되어야 함. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수 전체 코드 function solution(arr) { // 1 let previousValue = arr[0]; // 2 let newArr = [previousValue]; // 3 for (let i = 1; i < arr.length; i++) { // 4 if (previousValue != arr[i..
-
[프로그래머스] 없는 숫자 더하기 Javascript알고리즘 2021. 10. 4. 16:44
문제 내용 배열 (numbers) 는 0 부터 9 까지의 숫자가 주어짐. 배열 안에는 없는 숫자가 존재 (0 ~ 9 중에서) 이 없는 숫자를 모두 더해서 return 해라. 예를 들어, numbers return [0, 1, 2, 3, 4, 5] 30 (6 + 7 + 8 + 9) 이렇게 푸는 방식이다. 전체 코드 function solution(numbers) { return 45 - numbers.reduce((sum, currentValue) => sum + currentValue); } 먼저 0 부터 9 까지 의 총합 45 (0 + 1 + ... + 8 + 9) 를 구하고 그 값에 numbers 배열의 합을 뺀다. numbers 배열의 길이가 1보다 크거나 같고 9보다 작거나 같고 numbers 의..
-
[프로그래머스] 완주하지 못한 선수 Javascript알고리즘 2021. 10. 4. 16:29
문제 내용 마라톤 참가자 중에서 완주를 하지 못한 1명을 찾아라 마라톤 참가자 (participant) 와 마라톤 완주자 (completion) 이 주어짐. 예를 들어, 참가자 (participant) 완주자 (completion) return ["홍길동", "김아무개"] ["홍길동"] "김아무개" 이렇게 "홍길동" 만 완주에 성공하였으므로 "김아무개" 를 return 하면 된다. 전체 코드 function solution(participant, completion) { let index = 0; // 1 participant.sort(); // 2 completion.sort(); // 3 // 4 for (index; index < completion.length; index++) { // 5 if ..