백준

· 백준
들어가며..https://www.acmicpc.net/problem/1863이전에 해결 방법이 떠오르지 않아 넘어갔던 문제를 해답을 읽어보면서 답을 찾아나갔다.또 스택 문제였고, 내가 스택 문제에 약한지 방식이 잘 떠오르지도 않고 이해도 안되었다.너무 어려움 ㅠ본론많은 블로그들에서 왜 이 문제를 그렇게 해결하는지에 대한 답이 없었고 코드를 똑바로 안읽고 따라한다고 시행착오를 거쳤다.아이디어는 다음과 같다.설명입력값으로 들어오는 y를 확인하고 직전의 y값이 현재의 y값보다크다면 새로운 건물이라고 추정되기 때문에 stack에 삽입한다.작다면 건물이 끝나는 지점이라고 추정되기 때문에 stack에서 값을 pop한다.이 시점에서 끝나는 지점이라고 추정되는 건물이 없을 때까지 반복해준다.이 반복이 종료된 후, 건물..
· 백준
들어가며..이전에 풀기에 실패했던 9935 문자열 폭발을 다시 풀어보았고 다시 실패해서 해결방법을 보고 작성한다.https://www.acmicpc.net/problem/9935본론이전에 풀었던 방식은 replace 메서드를 사용한 방식으로 풀어보았었고, 오늘 다시 풀었을 때는, StringBuilder의 delete()를 활용해서 지워나갔지만, 여전히 메모리 초과가 발생했다문제의 코드import java.util.*;import java.lang.*;import java.io.*;class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new Inp..
· 백준
들어가며..이전에 문제 풀기에 실패했던 2138번 문제를 다시 보고 풀어보았고 결국 답을 보고 어떻게 해결해야하는지 찾아보고 해결하였다.문제 : https://www.acmicpc.net/problem/2138본론알고리즘 선택완전탐색 DFS처음에 문제를 보고 어떤 풀이법이나 정공법이 떠오르지 않았다.그래서 먼저, 완전 탐색을 고려해보았다.백트래킹을 활용해서, 최대한 가지치기로 속도를 높여보려고 했다.public static void DFS(char[] before, boolean[] visit, int now, int depth){ if(depth >= min) return; if(isEqualsArr(before)){ min = Math.min(min, depth); } ..
· 백준
20437구현 문제인 것 같다.문제에 나온대로 구현만 해주면 된다.https://www.acmicpc.net/problem/20437알고리즘알고리즘은 다음의 순서대로 동작한다.1. 입력 문자열의 알파벳 카운트int[] c = new int[26];for(char v : value){ c[v - 'a']++;}먼저, 입력값의 문자열의 알파벳들을 카운트해준다.이후에, 문자열을 반복할때 K보다 작은 카운트를 가진 값들은 연산하지 않는다.2.for(int i=0; i입력 문자 배열의 길이만큼 반복한다.앞에서 카운트한 값이, K보다 작다면 다음 반복을 돈다.i+1부터, 문자 배열의 마지막까지 반복한다.만약, value[j]의 값이 value[i]와 같다면, 갯수를 카운트해준다.만약 count가 K와 같아진다..
· 백준
1515완전 탐색 문제이다.알고리즘base와 pointer 두 가지를 두고 문제를 해결한다.290119라는 수가 주어졌을 때, 시작은 base = 1, pointer는 0(index)을 가르킨다.base와 pointer가 같은지 검사한다.만약 같다면, base와 pointer 모두 증가시킨다.만약 같지 않다면, base만 증가시킨다.두 자리, 세 자리수의 경우 base의 첫 번째 자리부터 1번처럼 탐색한다.여기서 여러 수중 한 자리인 경우, base와 pointer 모두 증가시킨다.!예시base = 1, pointer = 0 → 1 ≠ 2이기 때문에, base만 증가시킨다.base = 2, pointer = 0 → 2 = 2이기 때문에, base와 pointer 모두 증가시킨다.base = [ 3, 4,..
· 백준
https://www.acmicpc.net/problem/15889문제대한건아 욱제는 수류탄 투척 훈련을 받고 있다. 욱제를 필두로, 훈련장에는 욱제를 포함한 N명의 전우들이 일렬(1열 횡대 ㅎ)로 서있다. 군대에 끌려온 사실에 심술이 난 욱제는 수류탄의 안전핀을 뽑아 전우에게 던졌다. 마찬가지로 심술이 난 전우들도 욱제가 던진 수류탄을 받아 전우들에게 던지기 시작했다.이 게임을 중대장님이 모르게 끝마치려면 마지막 전우(왼쪽에서부터 N번째 전우)가 수류탄을 받아 조용히 행사용 폭죽 더미에 섞어놓아야 한다. 욱제와 전우들은 항상 최선을 다해 최적의 방법으로 게임을 조용히 끝마칠 수 있도록 노력한다. 과연 영창을 건 이 게임의 끝은 어디일까?풀이어떻게 풀까 고민을 하다 왼쪽에서부터 오른쪽 사람으로 스캔해가면..
· 백준
https://www.acmicpc.net/problem/2170문제매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자.이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오. 선이 여러 번 그려진 곳은 한 번씩만 계산한다.풀이문제를 해결하기 위해 라인 스위핑이라는 알고리즘이 무엇인지 찾아보았고 한 쪽 방향에서부터 시작해서 다른쪽 방향으로 스캔해가면서 푸는 방식 을 라인 스위핑이라고 합니다.이게 무슨뜻인지 많이 고민했고 선을 종이에 그려보면서 어떤 경우의 수가 나올까 고민해..
· 백준
15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net 문제 기차에 대한 명령이 다음과 같이 주어진다. 1 i x : i번째 기차에(1 ≤ i ≤ N) x번째 좌석에(1 ≤ x ≤ 20) 사람을 태워라. 이미 사람이 타있다면 , 아무런 행동을 하지 않는다. 2 i x : i번째 기차에 x번째 좌석에 앉은 사람은 하차한다. 만약 아무도 그자리에 앉아있지 않았다면, 아무런 행동을 하지 않는다. 3 i : i번째 기차에 앉아있는 승객들이 모두 한칸씩 뒤로간다. k번째 앉은 사람은 k+1번째로 이동하여 앉는다. ..
창e
'백준' 카테고리의 글 목록