철학하는 개발자

있는 것은 있고, 없는 것은 없다.

string 37

[백준 13414] 오셀로 재배치 [Java]

문제http://boj.ma/13413 13413번: 오셀로 재배치 boj.ma 풀이문제 요약주어진 두 규칙을 활용해 배열의 색상을 일치 시키기 위한 최소 횟수를 구하자.아이디어우선 두 배열의 각 색상 수가 일치하도록 해야한다. 흰색 면을 기준으로 세주었다. // Solve int colorDiff = 0; int unMatched = 0; for (int i = 0; i 색상 수의 차만큼 말들을 뒤집은 후에, 일치하지 않는 말들의 수를 세주자. int colorDiffCopy = Math.abs(colorDiff); for (int i = 0; i 0) { ..

[백준 05426] 비밀 편지 [Java]

문제http://boj.ma/5426 5426번: 비밀 편지 boj.ma 풀이문제 요약90도 회전으로 암호화된 배열 구조의 편지를 복호화 하자.아이디어배열의 방문 순서를 90도 회전한 배열에 맞춰서 방문하면 복호화가 된다. // Solve final int N = (int) Math.sqrt(encoded.length()); for (int j = N - 1; j >= 0; --j) { for (int i = 0; i 풀이 시간3분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/05426.java proble..

[백준 32516] 팰린드롬 판별하기 2 [Java]

문제32516번: 팰린드롬 판별하기 2 32516번: 팰린드롬 판별하기 2 boj.ma 풀이문제 요약주어진 문자열이 펠린드롬인지 알기 위해 필요한 최소 질의횟수를 구하자.아이디어다음 조건에 의해 주어진 문자열이 펠린드롬인지 판별할 수 있다.대칭되는 두 문자가 ‘?’ 인 경우 한 문자에 대해 최소한 25번 질의로 문자를 추측하고, 다른 한 문자와 동일한지 한 번의 질의로 판별할 수 있다.대칭되는 두 문자 중 한 문자만 ‘?’인 경우 이미 알고있는 문자인지 한 번만 질의하면 된다.대칭되는 두 문자가 ‘?’가 아닌데 서로 다른 경우 펠린드롬이 아니다. final int HALF = N >> 1; int cnt = 0; for (int i = 0; i 풀이 시간5분소스코드h..

[백준 15886] 내 선물을 받아줘 2 [Java]

문제http://boj.ma/15886 15886번: 내 선물을 받아줘 2 boj.ma 풀이문제 요약1 * N칸에 놓인 선물을 ‘구사과’가 가져갈 때, ‘구사과’를 어디에 놓든 항상 선물을 가져가도록 하기 위한 최소 선물 개수를 구하자.아이디어‘구사과’는 어디에 놓이든 지도를 벗어나는 경우가 없으며, ‘EW’인 지역에 위치하거나 이동하게 되면 고립된다. 따라서 1 * N 칸 중 ‘EW’인 칸의 수 만큼 선물을 놓아야 한다. int cnt = 0; for (int i = 1; i 풀이 시간5분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/15886.java problem-so..

[백준 04900] 7 더하기 [Java]

문제4900번: 7 더하기 4900번: 7 더하기 boj.ma 풀이7세그먼트 코드를 10진수로 표현한 A, B가 주어졌을 때, A, B의 합 C를 다시 7세그먼트 코드로 표현하는 문제다.우선 7세그먼트 코드에 대응하는 10진수들을 매핑해주자. HashMap map = new HashMap(); map.put("063", "0"); map.put("0", "063"); map.put("010", "1"); map.put("1", "010"); map.put("093", "2"); map.put("2", "093"); map.put("079", "3"); map.put("3", "079"); ..

[백준 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..