Algorithm

Algorithm/백준

백준 1074번 : Z(Java)

https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net [풀이] - 재귀 유형의 문제입니다. - 다음 칸을 방문하는 규칙은 일정하게 z 모양을 유지합니다. - 또한 배열의 크기는 2의 배수로 일정합니다. - 그러므로 재귀적으로 문제를 해결해야 합니다. - 재귀적으로 문제를 해결하기 위해 전체 배열을 1,2,3,4 이렇게 사분면을 나누어 생각해야 합니다.(실제 수학의 사분면과는 다른 개념입니다. z모양에 따른 사분면입니다.) - 1사분면일 경우..

Algorithm/백준

백준 11286번 : 절댓값 힙(Java)

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net [풀이] - 우선순위 큐를 이용한 자료구조 유형의 문제입니다. - 처음에는 음수, 양수를 구별한 두개의 우선순위 큐를 선언해서 절댓값을 비교하여 출력하려 했습니다. - 하지만, 좀 더 효율적인 방법은 우선순위 큐를 선언할 때, 정렬에 대한 정의를 재정의 하면 됩니다. - 이처럼, 우선순위큐의 정렬을 재정의하여 선언하면 절댓값 값이 같을 때, 다를 때 모두 대처를 할 수 있습니..

Algorithm/백준

백준 2493번 : 탑(Java)

2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net [풀이] - 스택을 이용한 자료구조 유형의 문제입니다. - 단순히 for 반복문을 이용할 경우 시간 초과가 발생합니다. - 그래서 스택에 있는 이전 값을 확인하며 대소비교를 하며 스택의 값을 삭제해야합니다. - 스택이 비어있다면 0을 출력합니다. - 스택의 최근 값이 새로 추가되는 값의 높이보다 클 경우, 인덱스를 출력하고 스택에 값을 추가합니다. - 만약, 최근 값이 새로 추가되는 값의 높이보다 작을 경우에는 이후 필요가 없기 때문에(어차피 새로 추가되는 값..

Algorithm/백준

백준 1748번 : 수 이어 쓰기1(Java)

1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net [풀이] - 수학 및 구현 유형의 문제입니다. - n의 문자열의 길이는 1 ~ 9 는 1개, 10 ~ 99는 2개, 100~ 999는 3개 이런식으로 증가합니다. - 입력받는 변수 n의 숫자의 길이(문자열로 했을 때 길이)는 10, 100, 1000 이렇게 10의 제곱수가 되었을 때 증가합니다. - 따라서, for문으로 하나씩 확인하며 값을 더하면 됩니다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static voi..

Algorithm/백준

백준 20291번 : 파일 정리(Java)

20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net [풀이] - 맵 및 정렬을 이용한 구현 문제입니다. - 문자열을 key로, 빈도 수를 value로 하며, 확장자가 나올 때마다 value에 +1을 하면 됩니다. - 만약, 이전에 없던 문자열 일 경우 getOrDefault() 메소드로 값을 설정할 수 있습니다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arr..

Algorithm/백준

백준 2343번 : 기타 레슨(Java)

2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net [풀이] - 이분탐색 유형의 문제입니다. - 최적의 크기를 구해야 하므로 mid 변수를 기준으로 계산을 합니다. - solve 메소드 내부의 for 반복문에서 합이 mid보다 커질 경우, count 변수에 1을 더합니다. - 마지막에 count 변수가 m 이하일 경우, end변수에 mid - 1 값을 할당합니다. - while 반복문이 끝난다면, start 변수를 반환합니다. (사실, mid 변수를 다른 곳에 선언해서 mid를 반환해도 됩니다.) [코드] import ..

skyey94
'Algorithm' 카테고리의 글 목록 (7 Page)