본문 바로가기
반응형

Programming/Algorithm29

백준 알고리즘 1920번 이분탐색 수 찾기 자바 JAVA 백준 알고리즘 1920번 수찾기 문제는 이분탐색 알고리즘을 사용해서 문제를 풀어야 한다. 이분탐색이란 검색 대상이 되는 데이터들을 절반씩 나누어 가면서 검색하는 탐색알고리즘이다. 참고로 탐색 알고리즘에는 크게 6가지 종류의 알고리즘이 있다. 선형탐색 검색 대상 데이터를 처음 부터 순차적으로 비교해서 검색하는 탐색 알고리즘 이분(이진)탐색 검색 대상 데이터를 절반씩 나눠가며 탐색하는 알고리즘 보간 탐색 찾을 값의 위치값을 예상해서 검색하는 사전형식의 탐색 알고리즘 블록 탐색 대량의 데이터를 그룹별로 블록화해서 인덱싱을 통해 검색하는 알고리즘 이진 트리 탐색 검색 대상 데이터를 이진 트리로 변경하여 검색하는 탐색 알고리즘 해싱 탐색 해싱 함수를 통해 데이터를 검색하는 알고리즘 선형탐색(Linear Searc.. 2022. 2. 23.
백준 알고리즘 18258 큐 자료구조 구현하기 큐(Queue)는 선형 자료구조다. 데이터 대응관계가 1:1로 매칭이 된다. 선형 자료구조에는 순차(Sequential) 구조와 연결(Linked) 구조가 있다.순차 구조로 삽입과 삭제 시간이 상당히 많이 소요되는 구조다. 그럼에도 불구하고 논리가 명확한 자료구조이기 때문에 함수호출이나 대기행렬에 주로 사용되는 자료구조다. 큐(Queue)에서는 스택(Stack)과는 다르게 포인터가 2개의 포인터가 존재한다. 삽입포인터(Rear)는 1씩 증가하면서 큐 자료구조에 자료를 추가하는 역할을 담당한다. 삭제포인터(Front)는 저장된 데이터 중 가장 처음 입력된 데이터를 출력하고 1씩 증가한다. 큐 자료구조에 데이터가 없는 상황은 삭제포인터와 삽입포인터가 같아지는 경우다. 큐(Queue) 구조는 데이터의 입구와 .. 2022. 2. 22.
백준 알고리즘 10828 스택 구현하는 방법 JAVA 백준 알고리즘 10828은 스택을 구현하는 알고리즘이다. 스택 알고리즘은 LIFO 방식의 자료구조다. 가장 나중에 입력된 값이 가장 먼저 출력되는 알고리즘이다. 스택 알고리즘을 가장 많이 사용하는 곳이 뒤로가기 앞으로가기 등의 웹 브라우저 인터페이스나, 문서 작업시 Undo, Redo 작업에 사용된다. 프로그램 시 운영체제에서도 스택 알고리즘을 사용해서 스택 메모리 영역을 관리한다. 스택영역에는 지역변수와 매개변수가 저장된다. 함수의 호출과 함께 할당되며, 함수 호출이 완료되는 순간 소멸된다. 이를 스택프레임(Stack Frame)이라 한다. 스택에서 현재 위치를 알려주는 스택포인터를 활용하여 알고리즘 구현이 완성된다. 스택에서는 대표적으로 POP(), PUSH() 메소드를 사용한다. PUSH() 메소드.. 2022. 2. 21.
백준 알고리즘 1003번 피보나치 함수 0과 1 개수 카운팅 JAVA 백준 알고리즘 1003번은 기존 피보나치 수를 구하는 알고리즘에서 나아가 0과 1의 수를 세는 문제다. fibonacci() 메소드를 실행하면 최종적으로 매개변수값이 1까지 줄어들게 되면서 마지막에는 0과 1이 카운팅 되기 때문에 주어진 자연수(40보다 작거나 같은 수)에 따라서 0와 1의 개수가 달라진다. 먼저 for문을 순회하면서 입력값을 받아오고, 다시 for문을 순회하면서 fibonacci() 메소드를 순차적으로 실행시키는 코드를 작성했다. 결과값은 맞게 나오지만 백준 코딩 사이트에서는 시간초과가 걸린다. 피보나치 로직을 그대로 실행시키면서 숫자를 구해도 되지만 시간초과에는 해결이 안된다. JAVA CODE #1 (시간초과 코드) import java.util.Scanner; public clas.. 2022. 2. 19.
백준 알고리즘 10870번 피보나치 수열 JAVA 백준 알고리즘 10870번은 피보나치 수를 구하는 알고리즘이다. 시작은 0과1로 시작하며 2 이상의 자연수 N이 주어졌을 때 피보나치 수열은 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 순서로 진행된다. 피보나치 수열의 공식은 Fn = Fn-1 + Fn-2 (n ≥ 2)이다. 뒤의 2개의 수의 합이 현재의 수를 결정하게 되는 것이다. 유럽에서 최초로 피보나치 수를 연구한 건 레오나르도 다빈치라고 한다. 토끼의 수가 늘어나는 원리로 설명했었는데, 태어난지 얼마 안된 토끼가 새로운 토끼를 낳을 수는 없기 때문이다. 풀이 백준 알고리즘 10870번 풀이 방법은 재귀함수를 사용하는 것이다. 재귀함수를 사용하기 위해서는 초기 셋팅값.. 2022. 2. 18.
백준 알고리즘 2447번 별 찍기 10 JAVA 백준 알고리즘 2447번은 별을 출력하는 문제다. 3의 제곱으로 만들어진 입력값을 받아서 중간이 비어있는 2차 배열을 만들어내야 한다. 입력값은 3, 9, 27 순서로 증가하게 되고, 그에 따라 그래프의 모양이 변하지만 팩토리얼 형식으로 출력된다. 백준 알고리즘 2447번 문제 해결은 재귀함수를 사용하는 것이다. 재귀함수를 통해서 반복 연산을 하기 위해서는 3가지 조건이 필요하다. 1. 탈출전략 2. 재귀 조건 변경 3. 초기 재귀 시작 조건 백준 알고리즘 2447번 문제의 경우 탈출전략을 세우기 위해서 입력값 N을 반복해서 쪼개는 작업을 진행해야 한다. N은 자연수 k에 대해 3의 거듭제곱이기 때문에 3으로 반복적으로 나눠줄 경우 최종적으로 1에 수렴하게 된다. 1이 되면 별을 찍고 탈출하게 된다. 재.. 2022. 2. 17.
반응형