본문 바로가기

All77

[백준 알고리즘] 11050번(이항 계수Ⅰ) [백준 알고리즘] 오늘은 이항 계수에 대해 먼저 알아보고 문제를 한번 풀어보도록 하겠습니다.그러기 위해서는 일단 이항 계수가 뭔지 부터 알고 가야합니다. 이항 계수위키 백과사전에는 이렇게 정의가 되어있습니다. 주어진 크기의(순서 없는) 조합의 가짓수이다. 고등학교 때 분명히 했을 텐데 기억이 안나서 여기 저기 찾아봤습니다.머리가 멍청한 건지 이해가 안돼서 정말 많이 찾아봤습니다. 그래서 정확하지 않을 수 있으니 참고만 하시고 저 보다 더 나은 자료 찾으시길 바랍니다. 일단, 나눠서 이해를 해봤습니다. 이항 과 계수 이항은 등식의 성질에 의해 좌변과 우변의 등식에서 어떤 한 변에 있는 항을 부호를 바꿔서 다른 변으로 옮기는 것을 말합니다. 쉽게 이해를 돕기 위해 1 + x = 5 라는 식을 보겠습니다.여기.. 2017. 8. 25.
[백준 알고리즘] 1003번(피보나치 수열4) [백준 알고리즘] 오늘도 피보나치 수열에 관련된 문제입니다.비슷비슷한 문제인데 거기에서 fibo(1) 과 fibo(0) 이 몇번 출력 되는지 알아보는 문제입니다.문제를 보고 이해를 하시면 금방하실 것입니다. 바로 코딩을 보여 드리겠습니다. 1234567891011121314151617181920212223242526272829303132333435363738import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner; public class Beak1003 { static int zero = 0; static int one = 0; public static in.. 2017. 8. 23.
[자바 기본] 컬렉션 프레임워크(List / Set / Map) Ⅲ Map 오늘은 Map을 보도록 하겠습니다.Map 컬렉션은 다른 것과 다르게 Key 와 Value로 구성이 되어 있습니다.이것이 가장 두드러진 특징 입니다. Map키(Key)와 값(Value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있습니다.여기서 키와 값은 모두 객체로 이루어져 있으며또한 키는 중복이 되면 안되지만 값은 중복 저장이 가능합니다.만약 기존의 저장된 키와 동일한 키로 저장한다면 기존의 값은 사라지고 새로운 값이 저장됩니다.키 값을 알면 간단하게 get( ) 메소드를 이용하여 키에 저장된 값을 가지고 올 수 있지만저장된 전체 객체를 대상으로 하나씩 객체를 가져 오고 싶다면 다른 메소드를 사용해야합니다. 1. keySet( ) 메소드모든 키를 Set 컬렉션으로 얻은 다음, 반복자를 .. 2017. 8. 22.
[백준 알고리즘] 2749번(피보나치 수3) [백준 알고리즘] 피보나치 수열을 오늘 모두 풀어보기 위해 다음 문제를 보겠습니다.이 문제는 피보나치 수열에 N번째 피보나치 수를 1,000,000으로 나눈 값을 구하는 문제입니다.그냥 단순하게 생각하고 N번째 피보나치 수에 1,000,000으로 나누니 출력이 안나오더라구요역시나 이렇게 쉬운 문제가 아니였습니다. 그래서 이리저리 해봤지만 안되서 구글링해봤습니다.구글링해보니 한 가지 더 알아야 할 것이 있더라구요그래서 거기에 대해 먼저 설명을 좀 하겠습니다. 일단, 피사노 주기(Pisano Period)를 기억하셔야 합니다.피사노 주기는 피보나치 수를 K로 나눴을 때 그 나머지가 항상 주기를 가진다는 말입니다.예를 보시겠습니다. 이렇게 일정한 주기를 가지게 됩니다.이 주기는 규칙을 가집니다 주기 길이를 P.. 2017. 8. 22.
[백준 알고리즘] 2748번(피보나치 수2) [백준 알고리즘] 저번에 포스팅한 피보나치 수는 재귀함수를 이용하여 문제를 해결했다면이번에 알고리즘은 다 똑같은데 범위가 45 -> 90으로 변경되었습니다.그래서 그냥 똑같이 제출을 하니 시간초과가 떴습니다.범위 주의하시고 푸시면 되겠습니다. 그리고 재귀함수로 해도 범위가 커짐으로 호출해야하는 자기자신의 숫자도 늘어납니다.그렇기 때문에 시간이 너무 오래 걸릴 것이므로 재귀함수를 사용하지 않고 그냥 for문으로 알고리즘을 짰습니다. 간단하게 작성이 가능합니다. 1234567891011121314151617181920import java.util.Scanner; public class Beak2748 { public static void main(String[] args) { Scanner sc = new .. 2017. 8. 22.