본문 바로가기

Java9

12969번 - ABC(bfs, dp) 문제: 풀이:문자열 ABC의 유효한 쌍은 'AB', 'AC', 'BC'이다.A만 입력시에는 유효한 쌍이 없고,AB까지 입력시에는 유효한 쌍이 ABABC까지 입력시에는 유효한 쌍에 AC, BC가 추가된다.위 예시를 통해 알 수 있는 것은 아래와 같다.A 입력시 고려할 것은 없다B 입력시 앞에 있는 A의 수만 고려하면 된다.C 입력시 앞에 있는 A, B의 수를 고려해야 한다.C를 문자열의 앞 부분에 추가할 때 고려해야 할 것은 없다.즉, A의 수, B의 수, C의 수, 유효한 쌍의 수 4개를 기록해 놓으면, 다음 문자를 추가할 때 계산을 편하게 할 수 있다.계산 과정은 아래와 같다.기록한 정보를 꺼내온다.유효한 쌍의 수가 K와 같다면, "C * (N - (A + B + C의 수) ) + 만들어진 문자"를 출.. 2024. 9. 13.
10942번 - 팰린드롬?(dp, br, st) 문제: 풀이:먼저, 팰린드롬이 뭔지 알아야한다.(1, 2, 1), (a, b, c, b, a), (가, 나, 다, 나, 가) 등 대칭되는 문자들의 모음을 팰린드롬이라고 한다.문제에서 알려주지않아 햇갈릴 수도 있지만, (1, 1), (1, 2, 2, 1)도 팰린드롬이며, 문자의 수가 짝수든 홀수든 상관 없다. 자 그럼 문제에서 준 보기를 이용해 문제를 풀어보자.1213121이렇게 배열이 주어졌다.먼저 보기에서 설명하듯 숫자가 1개 있을 때는 모두 팰린드롬이다. 1(1)2(2)3(1)4(3)5(1)6(2)7(1)길이: 111221133112211팰린드롬?ppppppp숫자가 두개 있을 때는 앞 뒤만 비교하고 같은 수라면 팰린드롬이다. 1(1)2(2)3(1)4(3)5(1)6(2)7(1)길이: 1112211331.. 2024. 9. 12.
12996번 - Acka(재귀, dp) 문제: 풀이:일반적인 재귀로 풀기에는 너무 많은 반복이 발생한다.S의 범위가 크지 않은 것으로 보아 dp를 이용해 풀면 좋을 것 같다.그렇다면 어떻게 dp를 이용해야 할까? 아래 예시를 통해 알아보도록 하자. 입력: 3 2 1 1각 차례에서 노래를 선택할 수 있는 방법은 아래와 같다. 인원 1인원 2인원 31OOO2OOX3OXO4XOO5OXX6XOX7XXO총 7가지 방법을 선택할 수 있다. 주어진 입력에서 어떤 경우의 수로 앨범을 만들 수 있나 살펴보자. 일단 방식 1을 첫번째로 택해봤다.S인원1인원2인원33211210010000XXX방식1을 택하면 앨범이 만들어지지 않는다.계속해서 2번째 방식을 택해보겠다.S인원1인원2인원3인원1인원2인원3인원1인원2인원332112112112101101101100000.. 2024. 8. 31.
11049번 - 행렬곱셈순서(dp) 문제: 풀이:행렬곱셈부터 소개하자면 5x3 행렬과 3x2 행렬이 곱해지려면 5x3x2의 연산이 필요하며, 그 결과 5x2행렬이 만들어진다.같은 원리로 3x2행렬과 2x6 행렬이 곱해지려면 3x2x6의 연산이 필요하며, 그 결과 3x6행렬이 만들어진다. (5 3) (3 2) (2 6) (6 1) (1 4)의 행렬이 주어졌다고 예시를 들고 그 연산과 결과에 대해 설명하겠다.바로 옆에 붙은 행렬끼리의 연산 횟수부터 구해보겠다.행렬이 2개일때 최소 연산 횟수5 33 22 66 11 4연산 횟수5 x 3 x 23 x 2 x 62 x 6 x 16 x 1 x 4만들어진 행렬5 23 62 16 4기본적인 행렬 곱셈 방법의 결과 연산 횟수와 새로운 행렬이 나왔다. 이제 위 행렬을 이용해보자행렬이 3개일때 최소 연산 횟수.. 2024. 8. 29.