- Today
- Yesterday
- Total
목록Algorithm/Baekjoon (162)
메이쁘
https://www.acmicpc.net/problem/2804 2804번: 크로스워드 만들기 문제 창영이는 크로스워드 퍼즐을 만들려고 한다. 두 단어 A와 B가 주어진다. A는 가로로 놓여야 하고, B는 세로로 놓여야 한다. 또, 두 단어는 서로 교차해야 한다. (정확히 한 글자를 공유해야 한 www.acmicpc.net 쉬운 문제이기 때문에 별도 알고리즘이 딱히 없었다. A, B 두 단어가 존재하면 A는 가로, B는 세로로 출력하는데 우선순위가 1) A와 B의 공통 문자를 찾는 것(A for in B for) 2) A 내 공통문자 중 인덱스가 가장 작은 것 3) B 내 공통문자 중 인덱스가 가장 작은 것 이고, 출력 시 A 공통문자 인덱스는 B 출력에 영향을, B 공통문자 인덱스는 A 출력에 영향을..
https://www.acmicpc.net/problem/16570 16570번: 앞뒤가 맞는 수열 수열 (a1, a2, ⋯, aN) 이 다음의 성질을 가지면 그 수열은 k-앞뒤수열 이라고 한다. (a1, a2, ⋯, ak) = (aN-k+1, aN-k+2, ⋯ , aN), 1 ≤ k < N 어떤 수열이 k-앞뒤수열일 때, k의 최댓값 k*를 그 수열의 앞뒤계 www.acmicpc.net 처음에 시행착오를 거치고 나서 정답을 도출했다. 바로.. 시간 초과! 제한 시간은 2초였기 때문에 for문 3개로는 버티질 못했던 것이다. 그래서 for문을 2개로 줄이는 방법이 없을까...? 무조건 있겠지... 이걸 찾는 것이 이 문제의 취지다! 라고 생각하여 골똘히 계속 생각했고, 해결 방법을 알아냈다!!!! 그래서..
https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net DFS와 BFS를 섞은 문제 하지만 필자는 DFS만 사용했다. (다른 사람들보다 성능은 조금 떨어진다..) 이 문제는 가장 짧은 다리 길이 를 구하는 문제이다. 그래서 필자가 푼 이 방법은 붙어있는 육지들 중 가장자리 육지들의 좌표값들만 별도 저장해뒀다가 붙어있는 육지 별로 1:1 매칭하여 x, y 차를 구한다. x, y 차란 두 개의 육지 P1, P2가 존재할 때 gapX = Math.abs(P1.x..
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 쉬운 문제. 핵심은 1. 연속된 같은 숫자들이 있으면 하나로 생각 2. 0 과 1 중 연속된 같은 숫자들의 종류 개수가 작은 것이 정답 ex) 0011100 일 때, 00 / 111 / 00 -> 종류 0 / 1 / 0 -> 개수 : 0 - 2개, 1 - 1개 이므로 1번만 뒤집으면 모든 숫자를 같게 할 수 있음. *** 참고로, 종류 개수 셀 때 맨 마지막 문자까지 세야 하므로 for문 종료 후..
https://www.acmicpc.net/problem/1509 1509번: 팰린드롬 분할 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하�� www.acmicpc.net 팰린드롬 문제 중 꽤 어려운 문제이다. *** 팰린드롬 유사 문제 https://maivve.tistory.com/29 (JAVA) 백준 10942번 : 팰린드롬? https://www.acmicpc.net/problem/10942 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진..
https://www.acmicpc.net/problem/2810 2810번: 컵홀더 문제 십년이면 강산이 변한다. 강산이네 동네에 드디어 극장이 생겼고, 강산이는 극장에 놀러갔다. 매점에서 콜라를 산 뒤, 자리에 앉은 강산이는 큰 혼란에 빠졌다. 양쪽 컵홀더를 이미 옆 사람 www.acmicpc.net 문자열 처리 관련 문제이다. 이 문제도 크게 어려움은 없다. 문제에서 알아둬야 할 것들은 이 부분이다. 1) 양 끝 좌석에는 컵홀더가 하나씩 존재한다. 2) 커플석(L)은 항상 그 사이에 컵홀더 존재X 3) 좌석의 양 쪽(왼쪽, 오른쪽) 에는 컵홀더가 존재 = 인접한 좌석 사이에 컵홀더가 존재 4) 자기 자신의 좌석 양 옆에 있는 컵홀더에만 컵을 놓을 수 있다. 바로 매커니즘으로 넘어가겠다. 매커니즘 1..
https://www.acmicpc.net/problem/11586 11586번: 지영 공주님의 마법 거울 천나라 민호성의 지영 공주님은 매우 아름답다. 공주님 자신도 이 세상 그 누구보다 자신이 아름답다는 것을 알고 있다. 공주님은 자신의 아름다움이 세월의 저편으로 사라지는 것을 매우 두려� www.acmicpc.net 엄청 쉬운 문제라 별다른 매커니즘을 적지 않겠다. 이 문제에서 하나 배운 것은 바로 sb.append(new StringBuffer(String).reverse().toString()); 이 코딩 한 줄이다. StringBuffer 클래스의 함수 중 하나인 reverse() 를 사용하여 해당 문자열을 뒤집어서(=거꾸로) 출력할 수 있다는 것이다. StringBuffer 클래스 선언 시 ..
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 시뮬레이션 + DFS 문제이다. 짚고 넘어갈 부분은 1. 무조건 바이러스는 시간 상관없이 퍼진다. -> 따라서, 다 퍼지고 퍼질 곳이 없을 때 바이러스 확산 함수를 종료한다. 2. 벽은 정확히 3개를 추가한다. 더 많이 또는 더 적게 추가할 수 없다. 3. 벽은 '0' 위치(= 빈 땅) 에만 추가할 수 있다. '1' 또는 '2' 에는 추가할 수 없다. 4. 바이러스가 더이상 퍼지지 않을 때 안전한 구역의 개..
https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하� www.acmicpc.net 삼성 기출 문제이다. 구현하기 위해 필기해둔 노트를 잃어버려 간단하게만 작성하겠다. 자세한 사항들은 소스코드 내 주석으로 달아놨기 때문에 주석을 참고하면 좋을듯 하다. 체스판 색깔 별 조건을 만족시키기 위해 Deque를 사용했다. *** Deque에 대한 내용은 하단 게시글을 참고하시길 바란다. https://maivve.tistory.com/103 (JAVA) 백준 16235번 : 나무 재..
https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀있고, i번째 원판에 적힌 j번째 수의 위치는 (i, j)로 표현한다. 수의 위치는 다음을 만족한다. (i, 1)은 (i, 2), (i, M)과 인접하다. (i, M)은 (i, M-1), (i, 1)과 인접하다. (i, j)는 (i, j-1), (i, j www.acmicpc.net 시뮬레이션 + DFS 문제. 삼성 기출 SW 문제집 문제 중 하나. 아래 질문에 대해 해결 방법을 찾아 구현하면 쉬운 문제이다. ..