본문 바로가기

Problem Solving27

[ 백준 2630 ] 색종이 만들기 - Java 문제 링크 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 문제 풀이 소스 코드 import java.util.*; public class Main { static int [][] paper; static int ans [] = {0,0}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); .. 2020. 12. 31.
[ 백준 2805 ] 나무자르기 - Java 문제 링크 http://boj.kr/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M을 www.acmicpc.net 문제 풀이 이 문제는 이분탐색에 분류되어 있는 문제이다. 이분탐색은 정렬되어있는 배열에서 원하는 값을 찾아가는 탐색법이다. 그런데 이 문제는 parametric search이라는 스킬을 이용해서 푼다. 간단하게 설명하자면 이분탐색은 시작과 끝의 중간점을 찾고 찾는 값이 더 크면 시작점을 중간점으로 잡고, 더 작으면 끝점을 중간점으로 잡고 다시 탐색하는것을 찾을 때 까지 반복한다... 2020. 12. 31.
[ 백준 1629 ] 곱셈 - Java 문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 풀이 해당 문제는 A의 B제곱을 구해서 C로 나눈 나머지를 구하는 문제입니다. 얼핏 보면 간단해 보이는 문제이지만 범위가 굉장히 크죠 A, B, C 모두 2,147,483,647 이하의 자연수입니다. 그래서 만약 A의 2,147,483,647 제곱을 구하려면 많은 연산이 필요하고, 시간 복잡도가 올라가게 됩니다. 그럼 이 문제를 어떻게 풀어야 할까요?? 분할 정복과 DP로 풀면 되는데, 다음에 나오는 예를 같이 보며 이해해보겠습니다. 예를 들어 .. 2020. 12. 18.
[ 백준 1149 ] RGB 거리 - Java 문제 링크 http://boj.kr/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 풀이 n까지의 집이 있고, 1 2020. 12. 16.
[ 백준 1904 ] 01타일 ( Java ) 문제 링크 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 문제 풀이 점화식 문제이고, 동적 프로그래밍 방법을 알면 쉽게 풀 수 있는 문제입니다. 차근차근 a1부터 써보면 값을 예측할 수 있습니다. a1 = 1; a2 = 2; a3 = a1 + a2 = 3; a4 = a2 + a3 = 5; ... 어떻게 이렇게 나오게 되는지 알아보겠습니다. 예를들어 a5의 경우를 보겠습니다. 1. a5는 맨 앞에 00이 오거나 1이 오게 됩니다. 2-1. 00이 오.. 2020. 12. 15.
[프로그래머스/Java] 문자열 압축 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 문제 풀이 저는 스택을 이용하여 풀었습니다. 전체적인 프로세스는 이렇습니다. 1. 1부터 입력으로 들어온 String의 크기까지 잘라 Stack에 넣는다. 2. 스택에서 꺼낸다. 2-1) 스택에서 꺼낸 값이 문자열일 경우 반복된 횟수 num 변수에 1을 넣는다. 2-2) 스택에서 꺼낸 값이 숫자일 경우 반복된 횟수 num 변수에 넣는다. 다시 스.. 2020. 12. 14.