본문 바로가기
  • 개발 삽질 블로그

프로그래밍/백준 문제풀이26

[백준] 1018: 체스판 다시 칠하기(Java) 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 체스판 다시 칠하기 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 128 MB 119183 59115 47285 49.768% 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이.. 2024. 3. 18.
백준 12789: 도키도키 간식드리미(Java) https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 도키도키 간식드리미 문제 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두근 설레서 시험 공부에 집중을 못 한다. 이번 중간고사에서도 역시 승환이는 설레는 가슴을 안고 간식을 받기 위해 미리 공지된 장소에 시간 맞춰 도착했다. 그런데 이게 무슨 날벼락인가! 그 곳.. 2023. 12. 19.
백준 14501: 퇴사 (Java) https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일 2일 3일 4일 5일 6일 7일 3 5 1 1 2 4 2 10 20 10 20 15 40 .. 2023. 11. 3.
백준 18870: 좌표 압축(JAVA)/ 좌표 압축 알고리즘 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 알고리즘 분류를 보면 정렬과 좌표 압축으로 분류가 되어있다. 좌표압축 알고리즘 -좌표(문제)의 범위가 너무 넓을 때 각 좌표에 인덱싱을 하여 좌표 사이 간격을 없앰 -중요한 구간이나 숫자만 갖고 가는 것 -불필요한 좌표를 날리기 or 데이터 자체를 압축 하기 -대소관계만 알면 될 때 사용함 데이터를 정렬해서 다시 순서를 부여 HashMap을 이용하.. 2023. 2. 1.
백준 1463: 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 알고리즘 분류는 다이나믹 프로그래밍이다. public class Main { public static int solution(int a[], int n) { if(a[n]!=0) return a[n]; if(n==1) return 0; if(n==2||n==3) return a[n] = 1; else if(n%6==0) return a[n] = Math.min(Math.min(solution(a, n/3),solution(a, n/2)), solution(a, n-1)) + 1; else if(n%3==0) r.. 2022. 11. 30.
백준 6603: 로또(JAVA) https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 조합 알고리즘을 이용하면 간단하게 풀 수 있는 문제다. import java.util.*; public class Main { static StringBuilder sb = new StringBuilder(); public static void main(String[] args){ int n; int[] arr = new int[14]; boolean[] visited = new boo.. 2022. 11. 30.