[백준] 2822번 점수 계산(정렬)
·
Algorithm
https://www.acmicpc.net/problem/2822 백준 2822번 점수 계신 문제를 풀어 보았다.처음에는 간단하게 풀 수 있을 줄 알았는데 생각보다 정렬하는데 시간을 썼다. 점수를 내림차순으로 문제 번호는 오름차순으로 정렬해서 출력을 해야 했다.점수와 문제 번호를 두개 다 신경을 써야겠다는 생각으로 처음에는 Map을 통해서 문제를 풀었다. 문제 푼 코드1import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.util.*;public class Main { public static void main(String[] args) throws IOException ..
[백준] 2789번 유학 금지(구현, 문자열)
·
Algorithm
https://www.acmicpc.net/problem/2789 백준 2789번 유학 금지 문제를 풀어 보았다.C A M B R I D G E 문자가 들어있으면 지운뒤 출력하는 문제이다. 나는 char로 처리하지 않고 String으로 처리했다.String의 replace 함수를 사용하여 쉽게 문제를 풀 수 있었다. 문제 푼 코드package bj2025;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class 유학금지_2789_250723 { public static void main(String[] args) throws IOException { Buffer..
[백준] 11051번 이항 계수 2(수학, 다이나믹 프로그래밍, 조합론)
·
Algorithm
https://www.acmicpc.net/problem/11051 조합론 부시기 2탄백준 11051번 이항 계수 2 문제를 풀어보았다.문제를 처음 풀 때 곱셉/나눗셈 반복 방식으로 하려고 했으나 1000! 이라는 엄청나게 큰 수라 long으로도 감당이 불가능했고 숫자가 너무 커져서 오버플로우가 발생하게 되었다. 이 수를 줄이려면 조건에 있는 10,007의 나머지를 구하는 식으로 구해야 하는데 정수 / 정수 = 유리수가 되어 정수를 보존하지 못하기 때문에 파스칼 삼각형 방식으로 풀게 되었다.(곱셉/나눗셈 방식으로 MOD 조합 계산을 하려면 페르마의 소정리 + 모듈러 역원이 필요하다는데 이 부분을 아직 공부하지 않기도 해서..) 결과 값에만 % 10,007을 하는 게 아니라 combi 함수 내에서도 결과값..
[백준] 2407번 조합(수학, 조합론)
·
Algorithm
https://www.acmicpc.net/problem/2407 이전에 다리 놓기 문제를 풀면서 조합 알고리즘에 대해 공부하고 개념을 다시 익히기 위해 백준 2407번 조합 문제를 풀어보았다. 문제 푼 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.math.BigInteger;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(ne..
[백준] 1010번 다리 놓기(수학, 다이나믹 프로그래밍, 조합론)
·
Algorithm
https://www.acmicpc.net/problem/1010 백준 1010번 다리 놓기 문제를 풀어 보았다.이 문제는 처음부터 내가 이해하고 풀 수 없었다... 내가 처음 문제를 읽고 이해한 것은 다리 연결 개수를 구하는 건줄 알았는데알고보니 서쪽 사이트 개수 기준으로 경우의 수를 구하는 거였다. 그래서 문제 이해부터 하고 문제를 이해한 다음에 어떤 방식으로 풀어야 하는지 찾아 보았다. 이 문제는 조합이라는 개념을 알고 가야 풀 수 있는 문제다. 조합이란?서로 다른 n개에서 순서에 상관없이 r개를 선택하는 경우의 수를 계산하는 공식이다.이 공식은 nCr = n! / (r! * (n-r)!)로 표현이 된다.n은 전체 원소의 개수이고 r은 선택할 원소의 개수이다. 여기서 중요한 포인트는 순서에 상관 없..
[백준] 9625번 BABBA(다이나믹 프로그래밍)
·
Algorithm
https://www.acmicpc.net/problem/9625 백준 9625번 BABBA 문제를 풀어보았다.문제상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다.기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했다. 한 번 더 누르니 BA로 바뀌고, 그 다음에는 BAB, 그리고 BABBA로 바뀌었다. 상근이는 화면의 모든 B는 BA로 바뀌고, A는 B로 바뀐다는 사실을 알게되었다.버튼을 K번 눌렀을 때, 화면에 A와 B의 개수는 몇 개가 될까?입력첫째 줄에 K (1 ≤ K ≤ 45)가 주어진다.출력첫째 줄에 A의 개수와 B의 개수를 공백으로 구분해 출력한다. A는 B로, B는 BA로 문자가 바뀌는 데 K번을 바꿧을..