"꾸준하고 완벽한 한 걸음"

string 32

[백준 09253] 스페셜 저지 [Java]

문제9253번: 스페셜 저지 9253번: 스페셜 저지 boj.ma 풀이두 문자열 A, B에 C가 있는지 확인하는 문제로 특정 언어에서 쉬운 문제다.Java의 경우 11과 15로 제출 시 시간 초과가 발생한다.Java 8에서 String.contains로 쉽게 풀이할 수 있다.import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String A = br.readLine(); String B = br.readLine(..

[백준 28125] 2023 아주머학교 프로그래딩 정시머힌 [Java]

문제28125번: 2023 아주머학교 프로그래딩 정시머힌 28125번: 2023 아주머학교 프로그래딩 정시머힌 boj.ma 풀이주어진 문자열에 대해 규칙대로 철자를 바꾸는 문제다.철자를 바꾼 횟수가 철자를 바꿔 만들어진 문자열 길이의 절반보다 크다면, 해석을 포기한다.우선 문제에서 주어진 철자 변환 규칙을 맵에 등록했다. 선택사항이다. // Input int T = Integer.parseInt(br.readLine()); HashMap map = new HashMap(); map.put('@', 'a'); map.put('[', 'c'); map.put('!', 'i'); map.put(';', 'j'); ..

[백준 21734] SMUPC의 등장 [Java]

문제21734번: SMUPC의 등장 21734번: SMUPC의 등장 boj.ma 풀이주어진 문자열의 각 문자에 대한 아스키코드의 각 자릿수의 합 만큼 문자를 출력하는 문제다.우선 각 자릿수의 합을 구하자. // Solve for (char c : S) { int loop = 0; int ASCII = c; while (ASCII > 0) { loop += ASCII % 10; ASCII /= 10; }이후 합 만큼 동일한 문자를 출력하면 된다. for (int i = 0; i 풀이 시간5분소스코드https://github.com/..

[백준 03076] 상근이의 체스판 [Java]

문제https://www.acmicpc.net/problem/3076 풀이한 칸의 길이가 A, B인 R*C 배열에 대해 체스판을 그려 넣는 문제다.체스판을 만들기 위해서는 체스판의 한 칸에 해당하는 영역을 방문 후, for (int i = 0; i A*B크기에 동일한 문자를 표시하면 된다. for (int a = 0; a 동일한 문자로 해당 영역을 전부 변경했다면, 마크 모양을 변경해야 한다.또한, 새로운 행으로 이동했다면 이전 행의 첫 번째 열 마크와 달라야 한다. mark = !mark; } startMark = !startMark; mark = startMark; ..

[백준 01769] 3의 배수 [Java]

문제https://www.acmicpc.net/problem/1769 풀이주어진 수의 각 자리를 합하는 과정을 반복해서 한 자릿수로 만드는 문제다.문자열을 순회하며 합을 구해주자. 연산 횟수도 구해야 하므로 카운트 해주자. // Solve int cnt = 0; while (X.length() > 1) { int sum = 0; for (int i = 0; i 마지막 한 자릿수가 3의 배수인지 아닌지 확인해주자. System.out.println(Integer.parseInt(X) % 3 == 0 ? "YES" : "NO");풀이시간≤ 3m소스코드https://github.com/rogi-rogi/problem-so..

[백준 25594] HG 음성기호 [Java]

문제https://www.acmicpc.net/problem/25594 풀이문자열 S가 사전에 주어진 매핑표의 문자열들로 구성되어있는지 확인하는 문제다.직관적인 매핑을 위해 Map으로 매핑 테이블을 만들었다.단순히 문자열 배열로 만든 후 아스키코드값을 인덱스처럼 활용하는 방법도 있다. // Solve Map map = new HashMap(); map.put('a', "aespa"); map.put('b', "baekjoon"); map.put('c', "cau"); map.put('d', "debug"); map.put('e', "edge"); map.put('f', "firefox"); m..

[백준 13022] 늑대와 올바른 단어 [Java]

문제https://www.acmicpc.net/problem/13022 풀이주어진 문자열이 패턴 ‘wolf’으로 구성되는지 확인하는 문제다.문자열의 길이는 50이므로 길이가 4배수인 패턴을 미리 생성하고 비교하거나 replace해주는 방식도 있지만, 정직(?)하게 풀어보았다.우선 문자열의 시작은 ‘w’로 시작해야한다. static char[] ptn = "olf".toCharArray(); private static boolean check(char[] S) { int idx = 0, gap = 0; while (idx 그리고 ‘w’가 아닌 다른 문자가 나올 때 까지 연속된 ‘w’의 수를 세주자. while (idx 연속된 ‘w’의 수만큼 패턴 ‘o..

[백준 19564] 반복 [Java]

문제https://www.acmicpc.net/problem/19564 풀이어떤 키를 누르든 A ~ Z부터 한 번씩 주어지므로주어진 문자열 S를 만들기 위해서는 각 문자가 이전 문자보다 순서가 사전순으로 뒤에 위치할 때만 추가로 키를 눌러도 되지 않는다.만약 이전 문자와 동일한 문자, 또는 순서가 앞서는 문자가 나온다면 키를 한번 더 눌러서 A-Z를 얻어야 한다. // Solve int cnt = 1; for (int i = 1; i 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/19564.java

[백준 13419] 탕수육 [Java]

문제https://www.acmicpc.net/problem/13419 풀이주어진 문자열에 대해 두 명이 탕수육 게임을 한다고 한다.자신의 차례 때 말해야 하는 문자로만 이루어진 최소 문자열을 출력하는 문제다.자신의 순서(0 또는 1번 인덱스)에서 2개씩 건너뛰며 다시 자신의 순서로 돌아올 때 까지 문자를 선택하면 된다. int idx = 0; StringBuilder a = new StringBuilder(); StringBuilder b = new StringBuilder(); do { a.append(S.charAt(idx)); idx = (idx + 2) % S.le..

[백준 30389] Suffix [Java]

문제https://www.acmicpc.net/problem/30389 풀이주어지는 N개의 문자열에 대해 모든 부분 접미사 집합을 구하고, 다음 문자열의 접미사 집합과 XOR연산을 하는 문제다.우선 현재 문자열의 접미사를 구해주는 메서드를 만들자.입력받은 문자열을 역순으로 한 칸씩 늘려가며 문자열을 결합해서 저장하면 된다. private static List getSuffixes(String s) { StringBuilder sb = new StringBuilder(); List suffixes = new ArrayList(); for (int i = s.length() -1; i >= 0; --i) { sb.append(s.charAt(i)..