Seren dev's blog
article thumbnail
[백준] 16719번 : ZOAC - 자바[Java]

https://www.acmicpc.net/problem/16719 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 풀이 문자열의 길이는 최대 100자이므로 n startIdx) { startIdx = data.idx; check[data.idx] = true; print(check, str); } } // update startIdx // 마지막 위치부터 앞으로 가면서 문자가 체크되어있는지 연속적으로 확인한 후, 체크하지 않은 문자가 있을 시 break int i = list.size() - 1; f..

article thumbnail
[백준] 17070번 : 파이프 옮기기 1 - 자바[Java]

https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 풀이 먼저 파이프가 놓여 있는 위치를 ArrayList pipe에 저장하고, 놓여있는 방향은 dir에 저장한다. (0 = 가로, 1 = 세로, 2 = 대각선) 그 다음 재귀함수를 호출하여 모든 경우의 수를 탐색한다. ArrayList pipe = new ArrayList(); pipe.add(new Point(0,0)); pipe.add(new Point(0,1)); mo..

article thumbnail
[백준] 10830번 : 행렬 제곱 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 11. 17. 19:05

10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 재귀함수를 이용한 분할정복으로 문제를 풀 수 있다. n, b, arr 배열 값을 입력받은 다음 divideAndConquer() 재귀함수를 호출하여 arr의 b제곱(result 배열)을 구한다. 주의할 점 B의 범위는 1 ≤ B ≤ 100,000,000,000 이기 때문에 int로 값을 받으면 NumberFormatException이 발생한다. 그래서 Long.parseLong을 사용하여 long으로 값을 받아야 한다. A^B의 각 원소를 1,000으로 나눈 나머지를 출력..

article thumbnail
[백준] 2630번 : 색종이 만들기 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 11. 17. 18:04

2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 풀이 재귀함수를 이용한 분할정복을 사용하여 문제를 풀 수 있다. main 함수에서 전체 종이의 한 변의 길이 N과 색종이의 위치 정보를 입력받고 divideAndConquer() 재귀 함수를 호출하여 (0, 0)부터 색종이 배열 탐색을 시작한다. divideAndConquer() 함수 내에서 인자로 받은 시작위치부터 색종이 배열을 탐색하다가, 시작 위치의 색과 다른 색을 발견하면 위 그림과 같이 색종이를 4등분하여 새로운 탐색을 시작해..

article thumbnail
[Softeer/소프티어] 수퍼 바이러스 - 자바[Java]

https://softeer.ai/practice/6292 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  풀이k * (p^10n) 을 구하는 문제다.다만 k, p,가 최대 10^8이 될 수 있고 n은 10^16이 입력으로 들어올 수 있기 때문에 k * (p^10n)을 아래 풀이와 같이 직접 구하면 시간초과가 뜬다.import java.util.*;import java.io.*;public class Main{ // k * p^10n public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..