회고

[Main-Project 개발일지]-14

Happy Programmer 2022. 9. 21. 23:50

mypage를 하는데 생각보다 mypage에도 들어가야 할 것들이 많았다.
css를 정돈하는 부분은 이제 적응해서 쉽게 할 수 있었지만
data를 PUT/PATCH로 보내야 한다는 부분이 있기 때문에 이걸 개별 지역상태값으로 관리를 해야 하는지 생각해보다가 form을 사용해야 유효성검사도 편하게 진행할 수 있겠다는 생각이 들었다. 물론 지역상태값으로 하게 된다면 실시간으로 하단에 유효성검사 내역이 나오기는 하지만 작성을 완성한 상태에서 떠올라버렸다..
form으로 변경 후 내부 값들을 event.target[0].value ,1,2로 순차적으로 받아준 후 nickname, password, email(자동)의 유효성검사를 한 후 통과할 경우 axios로 수정하는 기능까지 구현했지만 서버가 없는 것은 둘째치고 id값을 params로 동봉해야 하는데 로그인 상태가 아니기 때문에 params든 전역상태값이든 어디에서도 받아올 수 없기 때문에 주석처리로 놔둘 수 밖에 없었다.


중간에 페이지들을 이동하며 UX테스트를 하던 중 (취소)버튼이 없다는 사실이 불편하다는 생각이 들었다.
재료추가 까지는 실수로 누르지 않았다는 가정하에 취소할 이유가 없지만
재료조회는 (취소, 뒤로가기, 확인)의 기능을 하는 버튼이 없기 때문에 직접 <-버튼을 좌측 상단에서 누르거나 메인으로 돌아가 처음부터 확인하는 방법 뿐이었다.
그렇다고 변경하지 않은 내용을 자꾸 수정하기를 누르게 하는 방법은 데이터적인 면에서도 손실이 있고 이상하기 때문에 상의 결과 아래의 세가지 방법이 나왔다.
1.(x)버튼으로 뒤로가기
2.특정 영역 지정해서 뒤로가기 추가 (onclick="event.stopPropagation()">)
3.진짜 modal로 바꾸기

사실 1번과 2번 의견을 내자 팀원분이 모달과 비슷한데 모달로 하는건 어떠냐고 말씀하셨기 때문에 난이도로 나눠서 1,2,3으로 만들었다.

일단 완성된 상태가 아니고 2번도 바로 적용하기는 한번밖에 해본 적이 없는 오래된 일이기 때문에 편의성을 위한 1번을 먼저 완성한 다음 다른 기능을 다 점검한 후 추가(1,2,3차 완성을 멘토님이 추천해주셨기 때문에 1차 기능완성이 우선이었다.)하기로 했다.

팀원분이 modules 때문에 무거워서 지웠다는 말씀을 듣고 아차 싶었는데
ignore 파일을 만들지 않아서 그런 문제가 발생했다.
modules를 제외하는건 당연하고 추가적으로 환경변수?같은 정보들을 제거하는걸로 알고 있는데 다음부터는 주의해야 할 것 같다.
이미 만든 modules를 지우는 방법에 대해 구글링을 하던 도중
git rm --cached -r node_modules를 입력하면 바로 제외가 된다고 하셔서 실험해보니
git add . , commit을 하는 순간 수많은 delet mode xxxx가 쏟아져나왔다.
폴더 내부에 .gitignore파일을 만들고 node-modules/를 추가한 다음 push하니
깔끔하게 modules 없이 파일들이 잘 들어간 모습을 볼 수 있었다.

 

 

 

 

 

 

CT(1).동전1이라는 문제는 맨 처음 dp를 접하게 했던 냅색이론으로 풀 수 있는 문제 같았다.
간단하게 문제를 해결하고 제출했는데..? 메모리초과가 나와버렸다.
역시 백준은 더럽기 때문에 js를 위한 조건완화같은 부분은 없다.
js정답자가 한명도 없는 이런 상태를 왜 유지하는지 모르겠다.
내가 해결했다고 생각하는 코드는 아래와 같다.

let input = `3 10
1
2
5`.split('\n')
for(let i = 0 ; i < input.length ; i++){
    if(i === 0 ){
        input[i] = input[i].split(' ').map(Number)
    }
    else{
        input[i] = Number(input[i])
    }
}
let dp = new Array(input[0][1]+1).fill(0)
dp[0] = 1

for(let i = 1 ; i < input.length ; i++){
    for(let j = 1 ; j <= input[0][1] ; j++){
        if(input[i] <= j){
            dp[j] += dp[j-input[i]]
        }
    }
}
console.log(dp[input[0][1]])




CT(2).동전 2라는 문제는 다행히 js 정답자가 있어서 안심하고 풀 수 있었다.
위에 문제는 가짓수를 구하는 문제였다면 이 문제는 최소 갯수로 계산을 할 수 있는지에 대한 문제로 간단하게 해결했지만 오답이 나와 당황했으나 조건에 불가능할 경우 -1출력을 if문으로 설정해주고 해결할 수 있었다.

let input = `3 15
1
5
12`.split('\n')
for(let i = 0 ; i < input.length ; i++){
    if(i === 0 ){
        input[i] = input[i].split(' ').map(Number)
    }
    else{
        input[i] = Number(input[i])
    }
}
let dp = new Array(input[0][1]+1).fill(10001)
dp[0] = 0

for(let i = 1 ; i < input.length ; i++){
    for(let j = 1 ; j <= input[0][1] ; j++){
        if(input[i] <= j){
            dp[j] = Math.min(dp[j] , dp[j-input[i]] +1)
        }
    }
}
if(dp[input[0][1]] === 10001){
 console.log(-1)   
}
else{
console.log(dp[input[0][1]])    
}