본문 바로가기
반응형

PS 문제 풀이/Baekjoon446

[BOJ] 백준 9669 애너그램 (Java) 출처: https://www.acmicpc.net/problem/6996 알파벳의 순서를 바꾸어서 문자열이 서로 일치한다면 애너그램이라고 한다. 문자열이 주어졌을 때, 애너그램 여부를 판단하는 문제. ex) "flow" ↔ "wolf" 주어지는 문자열의 알파벳을 오름차순으로 정렬시킨 다음 문자열이 같은지 비교판단한다. ※ 관련문제: [Programmers] 문자열 내림차순으로 배치하기 import java.util.Arrays; import java.util.Scanner; public class Main { public static String sortStr(String str){ char[] sol = str.toCharArray(); Arrays.sort(sol); return new StringB.. 2021. 2. 13.
[BOJ] 백준 15685 드래곤 커브 삼성 SW 코딩 테스트 준비(A형) 삼성 SW 기출 모음 출처: https://www.acmicpc.net/problem/15685 Input 3 3 3 0 1 4 2 1 3 4 2 2 1 Output 4 시작점과 방향 그리고 몇 세대인지를 이용해 어디까지 좌표를 형성하는지 확인하는 문제. 이전 단계의 모양이 시계방향으로 그려지는 것을 확인할 수 있다. 모양 자체를 통해 해석하면 그림 자체가 시계방향으로 회전해서 이어붙이는 형태이지만 시계방향 회전을 코드적으로 구현하기에는 그 규칙이 쉽지 않다. 출발점에서 N세대까지 어떻게 진행했는지 방향을 분석해보자. 0세대 : → 1세대 : → / ↑ 2세대 : → ↑ / ← ↑ 3세대 : → ↑ ← ↑ / ← ↓ ← ↑ (슬러쉬 '/'는 이전 단계의 끝점에 해당된다.. 2021. 2. 13.
[BOJ] 백준 14503 로봇 청소기 삼성 SW 코딩 테스트 준비(A형) 삼성 SW 기출 모음 Approach 출처: https://www.acmicpc.net/problem/14503 #설계 #시뮬레이션 아래의 규칙을 기반으로 로봇 청소기가 청소하는 칸의 개수를 구하는 문제이다. N*M 크기의 공간이 주어져 있고, 로봇은 (r, c)에 위치한다. - 로봇청소기는 벽(1)이 아니면서 청소 가능한 칸이면 해당 칸으로 전지하여 청소한다. - 청소할 수 없다면, 반시계방향(←↓→↑)으로 돌며 청소 가능한 칸을 확인한다. (청소한 곳을 다시 청소하지는 않는다. 청소했던 지점으로 후진은 가능) - 네 방향이 모두 벽이거나 청소가 되어 있다면 현재 바라보고 있는 방향을 유지한 채 후진한다. - 후진도 할 수 없는 경우 작동을 멈춘다. Case 1 처음.. 2021. 2. 13.
[BOJ] 백준 1676 팩토리얼 0의 개수 (Java) 출처: https://www.acmicpc.net/problem/1676 N!에서 뒷자리부터 0의 갯수를 출력하는 문제 (0! = 1) (단, '0'이 아닌 숫자가 나오는 지점까지의 갯수) 0 ≤ N ≤ 500이므로 크지 않은 N이지만 N!는 long 타입으로 담을 수 없다. 그렇기에 규칙을 파악하여 N! 결과값이 아닌 팩토리얼 과정에서 규칙을 파악해야 한다. 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = 5040 8! = 40320 9! = 362880 10! = 3628800 ▶ 0 개수는 결국 10의 배수이며 2*5의 구성이 나오는 경우이다. 즉, N! 과정에서 2와 5로 나누어 떨어지는 경우를 count 한다. 주의해야할 Case [inp.. 2021. 2. 13.
[BOJ] 백준 3040 백설 공주와 일곱 난쟁이(Java) 출처: https://www.acmicpc.net/problem/3040 주어지는 9개의 숫자 중 7개를 선택했을 때의 합이 100이 되는 경우를 구하는 문제이다. 조합 개념을 이용할 수 있지만 9개의 숫자밖에 주어지지 않으므로, 삼중 for문 이용. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 9개의 모자의 숫자를 입력받는다. int[] arr = new int[9]; for(int i=0; i 2021. 2. 13.
[BOJ] 백준 1075 나누기 (Java) 출처: https://www.acmicpc.net/problem/1075 100 ≤ N ≤ 2,000,000,000에서 끝의 두 자리수를 최대한 작게 만들어서 주어진 정수 『 F 』로 나누어 떨어지게 하는 문제이다. ① 끝의 두 자리를 00 ~ 99로 숫자를 변환한다. (int 처리) ② 끝의 두 자리를 제외한 남은 자리의 수와 ①의 숫자를 이어준다. (String 처리) ③ F로 나누어 떨어지는 확인한다. import java.util.Scanner; // 이번 문제의 key point는 N의 뒷 두자리수를 최대한 작게하는 것이다. // (물론 F에 나누어 떨어져야한다.) public class Main { public static void main(String[] args) { Scanner sc =.. 2021. 2. 13.
반응형