알고리즘 테스트 ⏲
-
2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 작성 코드 (.py) import sys sys.stdin = open("input.txt", "r") # 제거 input = sys.stdin.readline def solution(n): if n == 3: return print(1) elif n == 4: return print(-1) table = [-1] * (n + 1) table[3], table[5] = 1, 1 for i in range(6, n + 1): if table[i - 3] == -1 and t..
[백준] 2839. 설탕배달 풀이 / Python, JavaScript2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 작성 코드 (.py) import sys sys.stdin = open("input.txt", "r") # 제거 input = sys.stdin.readline def solution(n): if n == 3: return print(1) elif n == 4: return print(-1) table = [-1] * (n + 1) table[3], table[5] = 1, 1 for i in range(6, n + 1): if table[i - 3] == -1 and t..
2023.04.16 -
18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 작성 코드 (.py) import sys sys.stdin = open("input.txt", "r") # 제거 n = int(input()) arr = list(map(int, sys.stdin.readline().split())) table, cnt = {}, -1 for i, v in enumerate(sorted(arr)): if v not in table: cnt += 1 table[v] = cnt for..
[백준] 18870. 좌표 압축 / Python, JavaScript18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 작성 코드 (.py) import sys sys.stdin = open("input.txt", "r") # 제거 n = int(input()) arr = list(map(int, sys.stdin.readline().split())) table, cnt = {}, -1 for i, v in enumerate(sorted(arr)): if v not in table: cnt += 1 table[v] = cnt for..
2023.04.16 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(maps) { maps = maps.map(m => m.split("")); const drow = [-1, 1, 0, 0]; const dcol = [0, 0, -1, 1]; let sr, sc, er, ec, lr, lc; for (let i = 0; i < maps.length; i += 1) { for (let j = 0; j < maps[0].length; j += 1) { if (maps[i][j] === "S") [sr, sc] =..
[프로그래머스] 미로 탈출 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(maps) { maps = maps.map(m => m.split("")); const drow = [-1, 1, 0, 0]; const dcol = [0, 0, -1, 1]; let sr, sc, er, ec, lr, lc; for (let i = 0; i < maps.length; i += 1) { for (let j = 0; j < maps[0].length; j += 1) { if (maps[i][j] === "S") [sr, sc] =..
2023.04.14 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(cards) { const visited = Array(cards.length + 1).fill(0) visited[0] = 1 let [group, result] = [[], []] let idx = cards[0] while (1) { if (visited.indexOf(0) === -1) { // 더이상 방문할 원소가 없는 경우 result.push(group) break } else if (!visited[idx]) { // 방문하지 않..
[프로그래머스] 혼자 놀기의 달인 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(cards) { const visited = Array(cards.length + 1).fill(0) visited[0] = 1 let [group, result] = [[], []] let idx = cards[0] while (1) { if (visited.indexOf(0) === -1) { // 더이상 방문할 원소가 없는 경우 result.push(group) break } else if (!visited[idx]) { // 방문하지 않..
2023.04.14 -
작성 코드 (1차 시도 / 통과) function solution(weights) { let result = 0 const table = Array(4001).fill(0) const isInt = (n) => n % 1 === 0 ? n : 0 // 실수 판별 weights.forEach(w => { result += table[w] + table[w * 2] // case 1, case 2 if (isInt(w / 2)) result += table[w / 2] // case 3 if (isInt(w * 2 / 3)) result += table[w * 2 / 3] // case4 if (isInt(w * 3 / 2)) result += table[w * 3 / 2] // case5 if (isInt..
[프로그래머스] 시소 짝꿍 풀이 / JavaScript작성 코드 (1차 시도 / 통과) function solution(weights) { let result = 0 const table = Array(4001).fill(0) const isInt = (n) => n % 1 === 0 ? n : 0 // 실수 판별 weights.forEach(w => { result += table[w] + table[w * 2] // case 1, case 2 if (isInt(w / 2)) result += table[w / 2] // case 3 if (isInt(w * 2 / 3)) result += table[w * 2 / 3] // case4 if (isInt(w * 3 / 2)) result += table[w * 3 / 2] // case5 if (isInt..
2023.04.14 -
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(sequence, k) { let [l, r] = [0, 0] let summed = sequence[l] // 현재 쌓여있는 합 (l~r위치 값의 합) const candidate = [] // 답안 후보 while (r k) summed -= sequence[l++] /..
[프로그래머스] 연속된 부분 수열의 합 풀이 / JavaScript프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(sequence, k) { let [l, r] = [0, 0] let summed = sequence[l] // 현재 쌓여있는 합 (l~r위치 값의 합) const candidate = [] // 답안 후보 while (r k) summed -= sequence[l++] /..
2023.04.13