-문제: https://www.acmicpc.net/problem/9252

 

9252번: LCS 2

LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.

www.acmicpc.net

 

-정답풀이:

  • findit()이 자기 이해가 잘 가지 않아서 복습해야할 것 같다
  • lcs 값 구하는 것은 이해 완 

 

-문제 이해:

  • 왼쪽 (1,3)부터 오른쪽 아래로 1,2,3,4에 해당하는 문자들을 출력하면된다
  • 근데 이거를 어떻게 구현하는지 잘 몰랐음 

 

  • 특정 인덱스의 왼쪽,위쪽 값을 비교해서 근방에서 최댓값이면 해당 문자를 넣고, 아니면 왼쪽이나 위로 움직이면 된다 

-문제: https://www.acmicpc.net/problem/2096

 

2096번: 내려가기

첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다.

www.acmicpc.net

풀이 이해는 어렵지는 않았는데 0,1,2번째 컬럼과 최댓값,최솟값 등 고려해야하는 단계가 많아서 메모리초과 발생

정답풀이로 푸는 방법 익혀보자 

 

-정답풀이: 

-틀린풀이: 

-문제: https://www.acmicpc.net/problem/1937

 

1937번: 욕심쟁이 판다

n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에

www.acmicpc.net

규칙을 만족하는 경로를 모아 놓고, 거기서 길이가 최대인 경로의 값을 출력하면 될 것 같은데

경로를 어떻게 설정하는지 몰랐음. 이거는 dfs로 풀어야함(알고리즘 익혀두기)

 

-정답풀이:

 

-틀린풀이(두개):

 

  • 초반에 recursionlimit거는 것
  • 9번째 줄에 x대신 n 쓰기 
  • 12번째 줄에 return 들여쓰기 

 

  • 이렇게 풀었을 때 문제점: (i,j)인덱스를 중심으로 경로를 넣는 것이 아니라, (i,j)값 보다 큰 값들이 모두 들어가서 경로를 표현하는 것이 아니게 됨. -> 깊이우선탐색(dfs) 알고리즘 익히기 

'백준 > DP' 카테고리의 다른 글

[코딩테스트] 9252번: LCS2  (0) 2022.01.09
[코딩테스트] 2096번 : 내려가기  (0) 2022.01.09
[코딩테스트] 백준 9655번: 돌게임  (0) 2022.01.07
[코딩테스트] 백준 1890 : 점프  (0) 2021.12.28
[코딩테스트] 1309: 동물원  (0) 2021.12.28

-문제: https://www.acmicpc.net/problem/9655

 

9655번: 돌 게임

상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.

www.acmicpc.net

어려워 보이지만 알고보면 굉장히 쉬운 문제다. 복잡하게 생각하지 말고 문제를 이해하면 됨. 

  • 예제에서 주어진 돌이 5개일 때 상근이가 이긴 과정을 생각해 보았을 때 다음과 같다

 

이때 발견한 것이 한번에 가져가는 돌의 개수가 1개 또는 3개 즉 홀수 이므로 N이 홀수라면 상근이를 거친 후 남은 돌의 개수는 짝수이고, N이 짝수라면 상근이를 거친 후 남은 돌의 개수는 홀수이다. 

  • 홀->짝->홀->짝->,,,,->1 :이때 순서인 사람이 이긴다
  • 짝->홀->짝->홀->,,,,->1 :이때 순서인 사람이 이긴다

그러다 무심코 N이 4, 즉 짝수일 때를 해봤는데 창영이가 이겼다. 그래서 N이 홀수면 상근이가 이기고, N이 짝수면 창영이가 이기나?하고 코드를 짜봤더니 정답이었다. 문제를 이해하려고 했으면 금방 풀 수 있었던 문제다

-정답풀이:

n=int(input())

if n%2==0:
    print('CY')
else:
    print('SK')

+ Recent posts