알고리즘
-
[java] 백준 알고리즘 2448번 별찍기-11 풀이알고리즘/백준 알고리즘 2018. 6. 25. 09:38
별들의 규칙을 보면 별이 그려진 현재 높이의 반을 했을 때 별 패턴과 현재 높이의 바닥쪽 별의 패턴이 비슷하다. 높이의 반을 했을 때 별의 패턴을 2배로 하면 현재 높이의 바닥쪽 별 패턴이 같다. 입력되는 수는 바닥의 라인까지라고 보면 된다. 높이의 반을 넘어가는 순간부터는 첫줄부터 높이의 반만큼의 2배 패턴과 같다. 패턴을 그려주면서 이미 그려진 패턴들은 라인수가 아래로 내려가는 만큼 기존의 패턴을 오른쪽으로 밀어주어야 한다. 구현한 소스는 아래와 같다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849public class Baekjoon2448 { public static v..
-
[java] 백준 알고리즘 2581번 소수 풀이알고리즘/백준 알고리즘 2018. 6. 14. 15:58
등차수열 공식을 이용해 시작하는 수(M)부터 끝나는 수(N)까지 총 합을 구하고, 소수가 아닌 수가 나올때마다 총 합에서 그 숫자를 빼주었다. 소수도 M과 N 사이의 숫자에서 소수가 아닌 값이 나올 때마다 빼주어 총 소수의 숫자를 구했다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061public class Baekjoon2581{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRe..
-
[java] 백준 알고리즘 1978번 소수 찾기 풀이알고리즘/백준 알고리즘 2018. 6. 14. 15:40
소수가 아닌 경우를 탈락 시켜 나가면서 해결했다. 이 공식을 활용했다. 수가 수를 나누기 위해서는 그 몫이 항상 필요하며 나누는 수와 몫 중 어느 하나는 반드시 {\displaystyle {\sqrt {n}}} 이하이기 때문이다. - 출처: 위키피디아 while문에서 나누는 수가 제곱근 이상이 되면 break를 걸었다. * 풀이 소스 1234567891011121314151617181920212223242526272829303132333435363738public class Baekjoon1978{ static StringTokenizer st; public static void main(String[] args) throws IOException { BufferedReader br = new Buffe..
-
[java] 백준 알고리즘 2750번 수 정렬하기 풀이알고리즘/백준 알고리즘 2018. 6. 14. 15:34
이중배열을 통해 해결했다. 바깥 for문이 아닌 안쪽 for문은 가장 큰 숫자를 가장 오른쪽으로 배열해준다. 그러나, 하나의 가장 큰 숫자를 가장 오른쪽으로 배열한다고 해서 끝나는게 아니라, 이것은 오름차순이기 때문에 오른쪽으로 갈수록 숫자가 커져야한다. 그래서 배열의 크기만큼 바깥 for문을 돌아주면 모든 숫자들을 비교하면서 오른쪽으로 이동하기 때문에 오른차순으로 정렬한다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637public class Baekjoon2750{ public static void main(String[] args) throws NumberFormatException, IOException { Buf..
-
[java] 백준 알고리즘 2750번 수 정렬하기 풀이알고리즘/백준 알고리즘 2018. 6. 4. 19:36
숫자의 길이만큼 for문을 돌리면 제일 큰 숫자가 마지막으로 가게 할 수 있다. 하지만 모든 숫자가 오름차순으로 정렬해야하기 때문에 이중for문으로 돌려준다. * 풀이 소스 123456789101112131415161718192021222324252627282930313233343536public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter..
-
[java] 백준 알고리즘 2748번 피보나치 수 2 풀이알고리즘/백준 알고리즘 2018. 6. 4. 15:15
다이나믹 프로그래밍 문제를 푸는 방식과 유사하다. * 풀이 소스 123456789101112131415161718192021public class Baekjoon2748{ public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); long[] fibonacci = new long[..
-
[java] 백준 알고리즘 1475번 방 번호 풀이알고리즘/백준 알고리즘 2018. 5. 31. 11:19
주의할 점은 1. 6, 9는 대체될 수 있다. 2. 중복된 수가 나와서 새로운 세트를 구입했더라도 사용하지 않은 이전 세트의 숫자를 사용할 수 있다. if문으로 9 혹은 6이 왔을 때 사용하지 않은 반대의 숫자가 있다면 대체될 수 있게 만들었다. 구입한 세트만큼 플라스틱 숫자를 사용하였으면 새로운 세트를 구입하도록 만들었다. 구입한 세트만큼 사용하지 않은 플라스틱 숫자가 있으면 사용하도록 만들고 그만큼 플라스틱 숫자를 사용했다고 1씩 추가했다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334public class Baekjoon1475 { public static void main(String[] args) throws Number..
-
[java] 백준 알고리즘 2775번 부녀회장이 될테야 풀이알고리즘/백준 알고리즘 2018. 5. 31. 11:10
문제를 읽어보면, 0층은 호수와 사람이 사는 수가 같다. 모든 층의 1호는 1명만 산다. 초기세팅은 이렇게 위와 같이 만들어 주면 되겠다. 이중배열로 해결하면 되는 문제! 일단 몇개 그려보면 왼쪽에 사는 사람과 아래층 사람을 더하면 지금 사는 곳에 살아야 할 사람의 수가 나온다. 예시) 4층 1명 6명 21명 56명 3층 1명 5명 15명 35명 2층 1명 4명 10명 20명 1층 1명 3명 6명 10명 0층 1명 2명 3명 5명 아래쪽 층의 사람 수와 -1 호수의 사람 수를 더하면 현재 사람 수를 구할 수 있다. * 풀이 소스 1234567891011121314151617181920212223242526272829303132333435public class Baekjoon2775 { public sta..