오늘은 10시 좀 넘어서 두분이 오셔서 진행됐다.
일단 오전중에는 body의 layout, css를 마지막으로 정돈했고
@git에 파일을 올릴 때 패스워드는 ignore에 올려야 한다는 내용을 전달받았다.

오후 2시부터는 다 같이 모여서 하기로 했으나
2시에 맞춰둔 알람이 제대로 작동하지 않아 지각해서 2시 11분에 들어와버렸다..
일단 ec2에서 백엔드에서 서버를 작동시키려고 하는 것 같은데 빌드에서 되지 않아
테스트를 해볼 수가 없는 상황이었다.

테스트를 돌리시는 동안 비로그인 헤더를 작업했다.
하지만 오른쪽에 있는 버튼의 크기에 따라 왼쪽의 정렬이 위로 밀려버리는 문제가 있었는데
우측 하단 또는 빈 공간의 margin을 통해 정렬하려는 시도는 모두 실패하고
state값을 지정해 className에 삼항연산자로 비로그인 상태에만 추가적인 magin class를 부여했는데 생각해보면 쓸대없는 짓이었다..
어차피 비로그인일 경우에만 출력되는 페이지기 때문에 큰 의미가 없었으므로 다시 수정했다.
다음부터는 상태값에 따라 출력이 변경될 경우 className값을 다르게 해서 적용되게 하면 될 것 같다. 

서버에서 데이터를 받아오려고 했으나
"http://15.164.53.160:8080/v1/questions/3"등의 id값 기준 페이지만 postman을 요청할 수 있었고 그 데이터 또한 cors 오류로 처리되지 않았다.
1시간 가량의 백엔드의 논의 후 origin 허용을 해서 다시 서버는 열렸지만
기존에 알려줬던 형태와 다르게 글들 앞에 question이 다 붙어있어 내부 정의들과 전부 충돌이 나서 구현은 커녕 하얀화면만 볼 수 있었다.

일단 프론트쪽에서 이름을 변경해서 띄워보기로 하고 
백엔드쪽에서 다시 데이터를 추가해서 (db가 추가되지 않아 자꾸 날아간다고 한다.)
구현해보기로 하고 진행중이다.

서버에 임시로 배열형태로 만들어서 보내주는 파일을 받았지만
자꾸 하얀 화면이 나오고 data.map은 기능이 아니라는 오류가 반복되었다.
console을 찍어보면 {data:[1,2,3,4,5]}라는 형태로 데이터가 들어오는데
데이터 입력 자체가 잘못된 느낌이었다.
하지만 데이터를 뜯을 수 있기 때문에 data[data]로 진행했으나 같은 이름이라서 그런건지 이유는 모르겠지만 undefined로 출력이 된다.
다행히 예전에 객체를 뜯어보면서 배웠던 Object.keys(data)를 통해 키 값을 받아올 수 있었고 (물론 이것도 data지만) 배열형태로 출력되어 Object.keys(data)[0]을 통해 0번째 값인 data를 받고 이것을 data에 넣어(말이 이상하지만 요청 이름이 data고 받아온 객체가 객체 내부에 데이터가 있는 형태라 그렇다) data[Object.keys(data)[0]]로 생각하던 배열 내부 객체들을 받아오고 원하는대로 출력할 수 있었다.

데이터를 구현하기 위해서는 아래의 3가지가 필요하고
1.API 명세서,
2.요청 시 받을 수 있는 데이터 형태 예시
3.데이터 구현에 필요한 최소 정보들 기입된 데이터 

삭제를 위한 delete, 수정을 위한 patch , 로그인 상태 인식, id 인식?등이 필요한 것 같다.
부족한 데이터는 로그인 상태, 로그인한 사람 id, 해시태그, 질문상태

일단 백엔드측에 위에 정리한 내용을 전달해드렸고(대화 및 디스코드 글 작성)
오늘 작업을 마무리했다.

남은 작업은
0.1~5번 내용 중 issue에 없는 부분을 추가해야한다.
1.sign up쪽의 데이터 전송 및 유효성검사, 로그인 페이지 연동을 1순위로 진행하고
2.login 상태값에 대한 정의가 만약 백엔드에서 넘어온다면 handler도 만들어서 상태값에 따라 바뀔 수 있게 하고(state까지는 만든 상태)
3.아마 위에 적힌 것으로도 정규시간이 끝나겠지만 로그인 유지(토큰)에 대해 학습하는 시간도 필요하고
4.내가 담당하지 않은 프론트쪽에서 수정,삭제,생성이 다 들어가기 때문에 그 쪽에 구현쪽 문제가 없는지도 체크하면 좋을 것 같다.
5.마지막으로 빌드에 대해서도 언제 시간나면 배포 전에 알아두면 좋을 것 같다.




CT(1).Charm Bracelet이라는 문제는 이전에 풀었던 배낭에 짐싸기와 유사한 형태를 띄고있다. 무게 제한이라는 포인트는 같으며 매력이라는 가치와는 다른 이름 정도의 차이로 보인다.
중요한 포인트는 앞에서부터 쌓아가는 것이 아닌 뒤에서부터 앞의 dp와 비교하면서 쌓기 때문에 단 한번만 증가한다는 것이다. 잔돈이나 무제한 획득 같은 상황에서는 동일한 내용물을 중복해서 가져갈 수 있기 때문에 앞에서부터 증가시키지만 1회성인 경우 뒤에서부터 가능한 포인트(남은 무게보다 현재 물품의 무게가 크거나 같은 경우)까지만 작동하게 한다.

let input = `4 6
1 4
2 6
3 12
2 7`.split('\n')
for(let i = 0 ; i < input.length ; i++){
    input[i] = input[i].split(' ').map(Number) //값 Number type으로 변
}

let nums = input[0][0]
let weight = input[0][1]
let dp = new Array(weight+1).fill(0)  //dp 생성 (0~weight까지)

for(let i = 1 ; i <= nums ; i++){
    for(let j = weight ; j >= 1 ; j--){
        if(j >= input[i][0]){  //무게보다 j가 큰 경우에만 비교
            dp[j] = Math.max(dp[j] , dp[j-input[i][0]] + input[i][1]) // 현재값과 현재무게-새 팔찌 무게인 무게의 값 + 새 팔찌의 가치 비교
    }
}
}
console.log(dp[weight]) //해당 무게의 가치!

 

'회고' 카테고리의 다른 글

[Pre-Project 개발일지]-10(주말)  (0) 2022.09.03
[Pre-Project 개발일지]-9  (0) 2022.09.02
[Pre-Project 개발일지]-7  (0) 2022.08.31
[Pre-Project 개발일지]-6  (0) 2022.08.30
[Pre-Project 개발일지]-5  (0) 2022.08.29

+ Recent posts