Programming/Algorithm 23

[백준/python] 11055번 가장 큰 증가 부분 수열

1. 문제 증가 부분 수열이란,수열의 부분 수열 중 증가하는 값으로만 이루어진 수열이다.단, 수열의 순서를 바꾸어서는 안 된다.그 중 합이 가장 큰 것을 구하는 문제이다.2. 풀이[접근 1]처음에는 dfs를 생각해서 문제를 풀었다. 1. 처음 값을 더해준다.2. 해당 값 보다 뒤에 있는 숫자들에 대해 그 값이 더 클 경우 dfs를 실행한다.3. dfs 실행을 마치고나면 기존 결과와 현재까지의 합계 중 큰 값을 결과값으로 바꾼다.4. 값이 더 작은 경우에는 넘어간다. 코드 작성은 잘 하였고 답에는 이상이 없어서 채점을 했는데 결과는 실패..시간 초과가 떠버렸다.그래서 접근 방법을 바꾸었다. [접근 2]이번에는 dp를 활용해서 문제를 풀었다.dp 테이블을 만들어서 각각 인덱스까지의 최대 합을 구한 뒤 그 중..

[백준/python] 20436번 ZOAC 3

백준 20436번 ZOAC 3 1. 문제 이 문제는 쿼티 자판에서 타자를 칠 때 걸리는 시간의 최솟값을 구하는 문제이다.키를 누르는 데 1의 시간이 걸리고 이동하는 데 두 좌표의 거리 (직선 거리 말고 택시 거리) 만큼의 시간이 걸린다.독수리 타법, 즉, 양손의 손가락을 하나씩만 사용하는 타법이고 왼손과 오른손은 한글 자음 모음의 위치로 구분한다.2. 풀이조금 귀찮은 구현 문제였다.쿼티식 키보드에 있는 모든 문자, 즉 알파벳 26개를 모두 배열에 넣어야했다.거리 계산의 간편함을 위해 가장 아래 왼쪽에 있는 'Z'를 (0,0)이라고 생각해서큰 배열 안에 3개의 줄이 있는 이중배열 구조로 키보드를 표현했다. 입력값은 모두 좌표가 아닌 문자로 주어지기 때문에 이걸 좌표로 바꾸는 함수를 만들었다.coordina..

[백준/python] 21918번 전구

백준 21918번 전구https://www.acmicpc.net/problem/21918 1. 문제 전구의 상태를 숫자 0과 1로 표현한다.전구가 꺼진 경우는 0, 켜진 경우는 1이다.전구를 제어하는 명령어 1~4번을 입력된 순서대로 처리한 뒤의 전구 상태를 확인하는 문제이다. 2. 풀이이 문제는 간단한 구현 문제로, 난이도가 쉬운 편이었다.각각의 명령어를 수행하는 코드를 짜서 명령어가 입력된 순서에 맞게 실행만 시키면 된다. 함수형 프로그래밍 구현을 위해 조건문을 사용해 각 경우를 함수 안에 넣었다.반복문을 사용해 명령어들을 입력받은 순서대로 실행했다. 3. 코드처음 시도에서는 평소 자주 사용하던 방식대로 입력 받은 명령어 정보를 배열에 저장했다.그 뒤에 배열에 저장한 각각의 명령어 정보에 대해 순서대..