알고리즘
-
백준 1002번 터렛알고리즘 2022. 6. 2. 18:34
출처 링크: https://www.acmicpc.net/problem/1002 열심히 경우를 고려하였지만 쉽지 않았다. /* r의 위치와의 관계 1) x좌표는 같고 y좌표만 차이나는 경우 2) y좌표는 같고 x좌표만 차이나는 경우 일직선상에 있는지 아닌지 판별 필요 3) x, y 좌표 둘 다 차이나는 경우 => 피타고라스 정리 활용 a**2 + B**2 = c**2 */ // 0 0 13 40 0 37 const x1 = 0 const y1 = 0 const r1 = 13 // 류재명과의 거리 const x2 = 40 const y2 = 0 const r2 = 37 // 류재명과의 거리 if (y1 === y2) { // 일직선상에 있는지 판단 // 일직선상에 있다면 y좌표가 똑같을 것 // 일직선상에 ..
-
백준 1011번 Fly me to the Alpha Centauri알고리즘 2022. 5. 29. 23:33
출처 링크: https://www.acmicpc.net/problem/1011 나의 풀이 let x = 45 let y = 50 /* 처음 시작은 무조건 1, 그 다음은 점점올라가다가 떨어지는 대칭 형태의 그래프에 가까움, 그래야 마지막에 y에 도달하기 전에는 1만큼 이동할 것이기 때문 => 그럼 그 중간 지점이 되는 부분을 어떻게 찾지? 1) 일단 3 < y-x 인지 아닌지로 나눠보자 0 { if (!(3 < b - a)) { // 이 경우 둘의 차이 만큼이 답이 된다. return b - a } else { /* b - a가 4일때 1 2 1 총 3번 5일때 1 2 1 1 총 4번 6일때 1 2 2 1 총 4번 7일때 1 2 2 1 1 총 5번 8일때 1 2 2 2 1 총 5번 9일때 1 2 3 2 ..
-
백준 1110번 더하기 사이클알고리즘 2022. 5. 23. 21:54
출처 링크: https://www.acmicpc.net/problem/1110 나만의 풀이법 // 입력값 const n = 26 let num = n let result = 0 let cycle = 0 while (true) { // 10 보다 작은 경우 앞 자리에 0 붙여서 연산하기 if (num < 10) { // result = 0 + num 이므로 아래와 같이 식을 써주어도 상관없다. num = Number(`${num}` + `${num}`) } else { result = `${num}`[0]/1 + `${num}`[1]/1 num = Number(`${num}`[1] + `${result}`.split('').pop()) // 이처럼 result를 문자열로 바꾼 후 split하면 result..
-
백준 1929번 소수 구하기알고리즘 2022. 5. 14. 16:57
출처 링크: https://www.acmicpc.net/problem/1929 처음 나의 풀이 // 에라토스 테네스의 체 이용하기? 근데 이건 소수가 있는 지 없는 지 판별할 때 썼던 것 같은데?? // 각각의 수가 1과 자기 자신을 제외한 약수가 있는지 없는지 판별해야 함 // 1과 자기 자신 사이의 수 중에서 자기자신 나누기 특정 수를 했을 때 나머지가 0인 경우가 있다면 제외처리 // m은 1이상 n은 2이상이 되어야 소수가 적어도 1개 이상 나올 수 있음 // 입력값 const m = 3 const n = 16 let answer = [] let count = 0 if (m === 1) { answer.push(2) for (let i = 2; i
-
백준 10250번 ACM 호텔알고리즘 2022. 5. 9. 21:57
출처 링크: https://www.acmicpc.net/problem/10250 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리..
-
백준 2869번 달팽이는 올라가고 싶다.알고리즘 2022. 5. 9. 16:22
출처 링크: https://www.acmicpc.net/problem/2869 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 다시 풀었을 때 풀이 const path = process.platform === 'linux' ? '/dev/stdin' : 'i..
-
백준 4948번 베르트랑 공준알고리즘 2022. 5. 9. 15:08
출처 링크: https://www.acmicpc.net/problem/4948 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. (범위: 1 ≤ n ≤ 123,456) 풀이 let input = [1,..