일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- dfs
- 브루트포스 알고리즘
- 배포
- 깊이 우선 탐색
- 소수 판정
- 정보처리기사
- 정수론
- 알고리즘
- 자료 구조
- 수학
- 스택
- 너비 우선 탐색
- 백준
- Vue
- springboot
- 프로젝트
- 그래프 이론
- MYSQL
- 그래프 탐색
- 백트래킹
- n과 m
- 구현
- 프로그래머스
- Spring Security
- JPA
- SWEA
- 다이나믹 프로그래밍
- DB
- 문자열
- 재귀
- Today
- Total
목록수학 (11)
영원히 남는 기록, 재밌게 쓰자

문제풀이입력받은 N의 소수인 인수들을 구하는 문제이다. √N까지 반복문을 돌면서 2부터 나누어 떨어지는 수가 있다면 떨어지지 않을 때까지 계속 해서 나누어 준다.남은 수가 1이 아니라면 남은 수를 출력해야 나머지 수가 출력된다.정답코드package com.baekjoon.math.p11653;import java.util.*;public class Main { static int MAX_NUM = 10_000_000; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); StringBuilder sb = new StringBuilde..

문제풀이합이 N이면서 연속된 수열의 길이가 적어도 L인 수열을 구해야 한다. 처음에 공식을 바로 사용하길래 이 공식이 무슨 공식인줄 잘 이해가 안되었다. 근데 연속된 수의 합이라서 공차가 1인 등차수열을 생각해서 해당 공식을 찾아보았다. 등차 수열의 합 공식a가 첫 항, n이 항의 갯수 d가 공차(여기서는 1)a를 구하는 방법은 합인 N이 주어졌을 때 그 몫(N/L)의 앞뒤 수를 (L-1)/2만큼 더하거나 뺐을 때 연속된 수가 나온다.(N/L) - (L-1)/2를 하면 몫을 기준으로 연속된 수의 가장 처음 수를 구하는 식인데 이게 음수이면 안된다. 그리고 이 수가 등차수열 합 공식의 a에 해당한다. 연속하는 처음 수를 L의 개수만큼 더한 결과가 N과 같으면 L길이 만큼 처음 수 부터 출력같지 않으면 L+..

문제풀이서쪽과 동쪽 사이트를 다리로 연결하는데 한 사이트에는 최대 한 개의 다리만 연결할 수 있다. 다리를 최대한 많이 짓는 경우(N개)를 가정다리끼리 서로 겹칠 수 없다. N보다 M의 갯수가 더 많다고 문제 조건에 주어져 있다. N개를 모두 빠짐 없이 고르는 경우의 수들을 체크해야 한다. M개 중 N개를 택하는 경우 -> 조합을 사용한다.조합을 사용할 경우 다리가 겹치는 문제도 해결할 수 있다. 조합은 중복을 허용하지 않기 때문이다.이항 계수와 파스칼의 법칙을 사용하여 nCr 조합을 구현하면 된다. 조합 참고 사이트https://st-lab.tistory.com/159#%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 [백준] 11050번 : 이항 계수 1 - JAVA [자바]www.a..

문제풀이문제 그대로 구현을 한다면 시간 초과가 발생한다. 나머지 정리와 조금의 응용이 필요했다.year가 될 수 있는 최대 값은 M, N의 최소 공배수가 될 수 있다. 최소 x 부터 시작하여 M, y 부터 시작하여 N을 만족해야 한다.year % M = xyear % N = y위 두 조건을 만족하여아 하는데 다르게 말하면 year가 M의 공배수 + x 이면 된다.그래서 최소 year = x부터 M만큼 증가시키면 1번 조건을 만족하고 그 떄의 year % N == y이면 위 두 조건을 만족할 수 있다. 하지만 한가지 예외가 10 12 10 6 인 경우 즉, 마지막 해와 N이 같은 경우 답을 체크하지 못함그래서 반복문에 들어가기 전 x와 y에 -1씩 해준 뒤 나머지 정리를 수행마지막 출력 때 year + 1..