오늘은 알고리즘을 조금 늦게까지 풀어버려서 늦게 시작해버렸다.
기능적인 부분은 충돌이 날 우려가 있기 때문에 svg파일을 이용해봤는데
생각보다 너무 단순해서 당황스러울 정도였다.
하지만 svg파일에 색을 입히는 부분에 문제가 생겼는데 이부분은 검색을 통해
fill: color;로 해결할 수 있다는 사실을 알아내서 해결했다.
내부 정렬이 원하는 위치로 가지 않는 문제는 margin값을 줘서 해결했지만
이렇게 하나씩 margin으로 이동시키는게 맞는지는 잘 모르겠다.
분명 유사한 그룹이지만 크기가 다른 경우 align-items를 사용해도 미묘하게 정렬이 달랐다.
의외로 레이아웃만 잡으면 나머지 css는 금방 해낼 수 있을 것 같았지만
미묘하게 다른 부분들의 수정이 쉽지 않은 것 같다.
특히 검색창 내부에 돋보기가 들어가는 부분은 absolute를 이용해야 하는건지
어떻게 해야 할지를 모르겠다.
관련 강의들을 들으며 일단은 넘어가야 할 것 같다..
CT(1).1,2,3을 더해 n을 만드는 가짓수를 구하는 방법은 dp를 이용해 쉽게 풀 수 있는데
그 전에 규칙을 찾아야 한다. 규칙을 찾아보면 dp[i-1] + dp[i-2] + dp[i-3]의 합이 dp[i]가 되므로 반복문을 통해 해당하는 n까지 돌려준 후 dp[i]를 통해 결과값을 알 수 있다.
만약 n개의 테스트케이스의 결과를 원한다면 for문을 통해 dp[i]를 result([])에 push해서 모아준 후 .join('\n')으로 출력해주면 된다.
CT(2).1,2,3가 중복없이 n을 만드는 가짓수를 구하는 방법은 일반적인 방법과 다른 접근이 필요한데 이차원배열?을 만들어서 처리해야한다.
1,2,3만 사용할 수 있기 때문에 1, 2, 3으로 시작하는 갯수를 구한 뒤 그 전의 값의 앞자리에 추가한다고 할 수 있다. 코드는 다음과 같은 느낌이다.
let dp = [[1,0,0], [0,1,0], [1,1,1]] // 1,2,3번째 값을 정의해준다.
for(let i = 3 ; i < max ; i++){
dp[i][0] = (dp[i-1][1] + dp[i-1][2]) //i번째 값의 첫번째 값은 1이므로 한칸 전 값과 비교(10인 경우 값이 9이며 시작점이 1이 아닌 나머지 두 값의 합
dp[i][1] = (dp[i-2][0] + dp[i-2][2]) //두번째 값은 두칸 전의 값(10인경우 합이 8인 값) 중 시작점이 2가 아닌 나머지 두 값의 합
dp[i][2] = (dp[i-3][0] + dp[i-3][1]) //같은 원리로 3 작은 값의 시작점이 3이 아닌 값들에 합쳐준다. 이 방식은 1~3 뿐 아니라 1~5 등도 가능한 방법이다.
}
CT(3).오늘도 이중for문 두번째 값에 i++를 해버렸다.. for문 내부에 i인지 j인지 k인지를 잘 파악하고 콘솔을 찍어봐야겠다.
CT(4).병사 배치하기라는 문제는 결국 내림차순의 최대 길이를 구한 후 초기 길이와 차이를 출력하면 되는 문제였다.
let input = `7
15 11 4 8 5 2 4`.split('\n')[1].split(' ').map(Number)
let dp = new Array(input.length+1).fill(0)
let result = 0
for(let i = 0 ; i < input.length ; i++){
let max = 0
for(let j = 0 ; j < i ; j++){
if(input[i] < input[j] && dp[j] > max){
max = dp[j]
}
}
dp[i] = max +1
}
for(let i = 0 ; i < dp.length ; i++){
if(result < dp[i]){
result = dp[i]
}
}
console.log(input.length - result)'회고' 카테고리의 다른 글
| [Pre-Project 개발일지]-5 (0) | 2022.08.29 |
|---|---|
| [Pre-Project 개발일지]-4(주말) (0) | 2022.08.28 |
| [Pre-Project 개발일지]-2 (0) | 2022.08.26 |
| [Pre-Project 개발일지]-1 (0) | 2022.08.25 |
| 프로젝트 관리하기-2 (0) | 2022.08.24 |
