알고리즘
-
소수 (Prime) - JavaScript알고리즘/Javascript 문제 2025. 4. 1. 01:26
코딩테스트 스터디에 들어갔다. 문제를 자주 푸는 습관을 만들어갈 수 있을 것 같다. 오늘은 JS를 활용해서 주어지는 두 수 사이의 소수를 구하는 함수를 이해한 바를 정리하고,백준 문제 1929번에 제출한 답안 기록한다. 소수 (Prime Number) 소수는 1보다 큰 자연수 중에서 1과 자기 자신만을 약수로 가지는 수를 의미한다.그렇기 때문에 아래와 같은 특징들을 갖는다.소수는 항상 두 개의 약수(1과 자신)만을 가진다.2를 제외하고는 모든 소수는 홀수이다.소수의 자연수 내에서 규칙적으로 나타나지 않으며, 분포가 불규칙적이고 개수는 무한하다.JS 구현입력값을 정렬하여 역순 입력도 대응 가능하다.소수를 판별하는 함수인 isPrime을 분리하여 구현하였다.범위 내 각 숫자에 대해 소수를 판별하여 배열에 저..
-
순열, 조합, 팩토리얼 - JavaScript알고리즘/Javascript 문제 2025. 3. 13. 21:59
알고리즘 문제를 풀때 재귀적으로 모든 경우의 수에 대해 접근할 때가 있다.이때 응용할 수 있는 기본적인 팩토리얼, 조합, 순열의 JavaScript 코드를 기록하고 공유한다.1. 팩토리얼 (Factorial)[네이버 사전]1 부터 n 개의 양의 정수를 모두 곱한 것을 n 계승(factorial)이라고 하고, n! 로 나타낸다.즉, n! = 1 x 2 x 3 x ... x (n-1) x n 이다.n! = n x (n-1)! 의 성질에서 n이 1일 때, 1 = 1 x 0!이 되므로 0! = 1로 약속한다. JS 구현재귀함수를 이해하는데 가장 기본적인 예제라고 할 수 있다.재귀함수와 반복문을 사용한 두 가지 방법으로 구현해 볼 수 있다.다음에 구현할 순열과 조합에서는 재귀함수를 사용하므로 재귀함수를 더 눈여겨..
-
[Softeer] Lv.2 바이러스 - JavaScript알고리즘/Javascript 문제 2025. 2. 27. 17:33
1. 문제N초 후 P배씩 증가하는 K마리의 바이러스의 수를 구하는 문제 2. 해설매우 큰 수에 대한 반복문과 BigInt 자료형을 알고 있는지 점검하는 문제(일반 원시 자료형으로 계산하면 틀린다.)입력값을 받아 처음부터 BigInt 자료형으로 변환하여 정밀도 손실 없이 정확한 계산을 수행해야 한다.Number 타입을 사용하는 경우 큰 수의 곱셈에서 오버플로우와 정밀도 손실 문제가 발생할 수 있다. 3. 해답const [k, p, n] = require('fs').readFileSync('/dev/stdin', 'utf8').trim().split(' ').map(e => BigInt(e));let tmp = k;for (let i = 0; i 4. 문제 출처https://softeer.ai/practi..
-
[Softeer] Lv.2 연탄의 크기 - JavaScript알고리즘/Javascript 문제 2025. 2. 27. 16:49
1. 문제(Lv.2) 연탄을 사용할 수 있는 집의 최대 수 구하기 2. 해설최대 나눌 수 있는 수 찾기- 2 ~ 100까지의 수로 input 요소들이 나누어지는 검사- input 배열의 요소 radius가 2 ~ 100 사이의 숫자 i로 나누어 떨어지면, count 값을 1 증가- 만약 count > maxCount 이라면, maxCount를 업데이트- 모든 for문에 끝난 이후 결과값 maxCount를 출력 3. 해답const fs = require('fs');const [n, data] = fs.readFileSync('/dev/stdin', 'utf8').trim().split('\n');const input = data.split(' ').map(Number);let maxAvail = 0;for..
-
[HSAT] 현대 SW 정기 코딩 인증평가 일정알고리즘 2024. 3. 21. 01:58
내가 궁금해서 찾아보고 다른 사람도 궁금해 할 수 있다고 생각해서 글을 쓴다. 현대 정기 코딩 인증평가(Hyundai SW Aptitude Test, HSAT)의 역대 일정을 정리했다. 년도 차수 접수기간 평가 지원자수 2021 1차 06/16 13:00 ~ 06/23 23:59 06/26 13:00 ~ 15:00 279 2021 2차 08/09 13:00 ~ 08/25 23:59 08/28 13:00 ~ 15:00 483 2021 3차 12/06 00:00 ~ 12/20 17:00 12/21 17:00 ~ 20:00 501 2022 4차 08/24 10:00 ~ 09/04 23:00 09/06 17:00 ~ 20:00 453 2022 5차 11/18 10:00 ~ 12/04 23:00 12/06 17:..
-
[알고리즘] 백준 14916번 거스름돈 (파이썬)알고리즘/Python 문제 2023. 6. 19. 20:29
거스름돈 제한 시간 : 2초 메모리 : 512 MB 정답 비율 : 47.232% 문제 : 춘향이는 편의점 카운터에서 일한다. 손님이 2원짜리와 5원짜리로만 거스릅돈을 달라고 한다. 2원짜리 동전과 5월짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오. 예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다. 입력 13 출력 5 제출 # 15=>5(3), 13=>5(1)+2(4), 11=>5(1)+2(3) # 1,3 => -1..
-
[알고리즘] 백준 1436번 영화감독 숌 (파이썬)알고리즘/Python 문제 2023. 6. 19. 20:23
영화감독 숌 제한 시간 : 2초 메모리 : 128 MB 정답 비율 : 55.362% 문제 : 666은 종말을 나타내는 수라고 한다. 따라서 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워 4, 스타워즈 5, 스타워즈 6와 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를..
-
[용어] 파이썬 - 이터러블 (Iterable), 이터레이터 (Iterator)알고리즘/Python 용어 2023. 6. 15. 18:50
목차 1. Iterable 2. Iterator 1. 이터러블 (Iterable) 1-1. 사전적 의미 [형용사] 반복할 수 있는 1-2. Python 공식 용어집 멤버들을 한 번에 하나씩 돌려줄 수 있는 객체(Object). 이터러블의 예로는 모든 (list, str, tuple 같은) 시퀀스 형들 dict 같은 몇몇 비시퀀스 형들, 파일 객체들, __iter__() 나 시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있다. 이터러블은 for 루프에 사용될 수 있고, 시퀀스를 필요로 하는 다른 많은 곳 (zip(), map(), ...) 에 사용될 수 있다. 이터레이트할 때 원하는 시퀀스 항목들을 순서대로 돌려주는 객체이지만, 실제로 리스트를 만들지 않아서 ..
-
[알고리즘] 백준 10814번 나이순 정렬 (파이썬)알고리즘/Python 문제 2023. 6. 15. 16:27
나이순 정렬제한시간 : 3초메모리 : 256 MB정답 비율 : 43.320%문제: 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.입력: 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. : 예제 입력 13 21 Junkyu 21 Dohyun 20 Sunyoung출력: 첫째..