본문 바로가기

알고리즘41

회문 / 팰린드롬 (JAVA) 회문(回文) 또는 팰린드롬(palindrome)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말 숫자, 문자열(sequence of characters) 등이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다. 아래의 코드는 알파벳만 비교하여 회문인지 판별하는 코드이다. -> replaceAll부분을 보면 [^A-Z] 라는 정규식이 있는데 이 정규식은 A~Z사이의 알파벳이 아니면(부정의 뜻) 을 의미한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class inf_1_08 { static String solution(String str){ String a.. 2023. 4. 1.
백준 11659 구간 합 구하기 4(JAVA) - DP(Dynamic Programming) 백준 11659번 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 문제설명 첫째 줄에 N(숫자의 개수)과 M(반복할 횟수) 를 입력받아 진행 접근 처음엔 for문으로 풀어볼까 생각했지만 범위가 각 10만까지라 1초가 넘어 갈것같아 DP로 접근 각 구간까지의 합을 DP 배열에 저장해두고 i,j(구간의 시작과 끝) 을 입력받은 다음 dp[j]에서 dp[i-1]을 빼주면 된다. (dp[0]은 0을 넣어줌.) ex) 5 4 3 .. 2023. 4. 1.
백준 7562 나이트의 이동(JAVA) - BFS 백준 7562번 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제설명 체스판에서 나이트 (위의 그림처럼 대각선으로 이동가능함)가 몇번만에 이동가능한지 알아내는 문제 체스판의 변의 길이가 주어지고, 초기위치와 도착위치를 입력받는다. 접근 BFS로 접근 ( 기본이 상하좌우 라면 이 문제는 좌표를 각각 대각선에 맞춰 설정) 코드 import java.io.BufferedReader; import java.io.IOException; import j.. 2023. 3. 25.
백준 10026 적록색약(JAVA) - BFS 백준 10026번 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제설명 적록색약이 아닌사람(A) 적록색약인 사람(B)과 이 봤을때의 그림의 그룹의 개수를 나누는 문제 A는 R,G,B 각각의 그룹을 나눌수 있지만 B는 R,G가 같게 보인다는 가정. 접근 BFS로 접근 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;.. 2023. 3. 25.