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

Implementation 84

[백준 21965] 드높은 남산 위에 우뚝 선 [Java]

문제21965번: 드높은 남산 위에 우뚝 선 21965번: 드높은 남산 위에 우뚝 선 boj.ma 풀이주어진 수열이 문제에서 요구하는 수열인지 판별하는 문제다.어떤 지점까지 증가하다 감소하는 형태인지 판별하기 위해서 다음과 같이 분기를 정할 수 있다.현재와 이전 값이 같거나, 감소하는 추세에서 현재 값이 이전 값보다 증가하는 경우증가하는 추세에서 현재 값이 이전 값보다 감소하는 경우두 분기에 따라 결과를 결정하거나, 증가/감소 형태를 결정하면 된다 // Solve boolean isASC = true; String res = "YES"; for (int i = 1; i A[i - 1]) { res = "NO"; ..

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

[백준 14402] 야근 [Java]

문제https://www.acmicpc.net/problem/14402 풀이동명이인을 고려한 전체 출퇴근 기록에 대해 출근 기록과 퇴근 기록이 일치하지 않는 경우를 전부 야근이라 가정하고, 전체 야근 인원을 구하는 문제다.만약 동명이인이 출근을 했다면, 출근한 동명이인의 수를 세주자. // Solve Map map = new HashMap(); int res = 0; while (N-- > 0) { st = new StringTokenizer(br.readLine()); String name = st.nextToken(); String op = st.nextToken(); if..

[백준 11637] 인기 투표 [Java]

문제https://www.acmicpc.net/problem/11637 풀이N명의 후보자에 대한 투표수가 주어질 때 다음 조건에 따라 올바른 문구를 출력하면 된다.최다 득표자가 과반수 득표를 했을 때최다 득표자가 절반 이하의 득표를 했을 때최다 득표자가 2명 이상일 때이를 위해서는 최다 득표 수와, 최다 득표자의 순서, 전체 투표수를 구해야 한다. int max = -1, idx = -1, sum = 0; for (int i = 0; i max) { max = A[i]; idx = i; } }이후 최다 득표자가 2명인지 확인 후 i..

[백준 03991] 한번 쏘면 멈출 수 없어 [Java]

문제https://www.acmicpc.net/problem/3991 풀이문제의 규칙에 따라 구슬들을 없애면서 최대 점수를 구하는 문제다.최대 점수를 얻기 위해서는 종류가 C개인 구슬들을 종류 별 로 한 턴에 전부 없애면 된다.그러기 위해서는 구슬을 아래에서 위로, 왼쪽에서 오른쪽으로 계단을 쌓듯 구슬을 배치하면 된다. // Solve int idx = 0; for (int j = 0; j = 0; --i) { if (color[idx] 이제 오른쪽 위부터 구슬을 제거하면 남아있는 구슬들의 위치가 바뀌지 않으면서도 한 턴에 한 종류의 구슬을 모두 제거할 수 있다. 풀이 시간≤ 13m소스코드https://github.com/rogi-rogi/..

[백준 28238] 정보 선생님의 야망 [Java]

문제https://www.acmicpc.net/problem/28238 풀이주어진 N명의 학생들의 시간표를 보고 가장 많은 학생들이 두 번의 수업에 참여할 수 있는 날과, 참여할 수 있는 인원을 구하는 문제다.학생의 수와 요일의 곱이므로 모든 경우를 다 생각해볼 수 있다.모든 경우에 대한 합을 구하고, 합이 갱신될 때 마다 두 요일을 기록해두면 된다. // Solve int a = -1, b = -1; int max = -1; for (int i = 0; i max) { a = i; b = j; max = cnt; } ..