오늘도 오전10시에 온 사람은 없었다. 현재는 10시 22분인데 이럴거면 굳이 규칙을 정할 필요가 있었을까 싶다.
다른 팀들에서는 정규시간에는 1시간? 또는 30분 내에 답변, 평일은 오후라도 당일까지는 확인은 해주는 방식으로 진행하던데 우리는 굳이 상시대기라는 규칙을 정하고 모이지는 않는 것 같다.
현재 부족한 부분이 Body-css, Signup-css, mapping css(question list, hashtag), non-loging Header(layout, state handle, css)으로 제일 골치아프고 귀찮은 Signup의 봇 부분을 먼저 건드려야겠다.
@회원가입 중 다른 부분은 상관없지만 Log in 부분은 login페이지와 연동될 수 있게 해야겠다.
봇 체크는 결국 이미지로 대체하기로 했고 하는 도중에 가능하다면 absolute를 이용해 체크표시만 넣어주면 좋을 것 같은데 체크 된 이미지 안된 이미지를 따로 구할 수 없어서 그럴 수도 없을 것 같아 아쉽다.
봇 부분을 마무리하고 세부적인 css를 다듬고 있는데 줄 사이 간격을 조절할 수가 없는 이상한 상황이 생겨서 line-height를 사용했으나 20아래로는 내려가지 않았다.
10분넘게 시도해보다가 완전 모양이 같을 필요는 없기 때문에 일단 다음으로 넘어갔다.
전체적인 signup의 css를 다듬은 후 생각해보니 회원가입인데 기능도 들어있지 않고 유효성검사도 없기 때문에 아직까지 문제가 많은 상황이었다.
일단 전반적으로 부족한 부분들을 체크한 뒤 이슈를 다시 생성해서 올렸다.

현재 진행중인 css는 body부분이 남았기 때문에 일단 body를 먼저 진행한 후
Todo중에서 골라서 진행하기로 생각했다.
해야 할 일들이 계속 늘어날수록 뭘 해야할지 헷갈렸는데 칸반을 보니 우선순위를 정할 수 있어 도움이 되는 것 같다.
며칠 안했는데 초반에 진행했던 body를 보니 layout만 잡혀있는 상태라서 엉망진창으로 보였다. 여기에 들어갈 값들도 따로 설정해서 넣을 수 있으면 좋겠지만 아마 장식으로 끝날 가능성이 높아보인다.
내용부분을 잘 살펴보니 list에 본문내용이 일부(약 100글자?) 들어있는 것을 발견했다.
로그인과 비로그인의 메인이 달라 Home, Question의 차이가 있다는 부분을 몰랐는데
이 부분도 수정이 들어가야 할 것 같다. 클론이라 이 부분을 그냥 넘길지 아니면 굳이 구현을 해야할지에 대한 논의가 필요해보인다.
내일 또는 그 이후 할 작업
1.body css 마무리
2.sign up 누를 경우 데이터 전송하는 함수 만들어두기?(객체가 어떻게 될지 몰라 아직 못건드리고 있다.)
3.아이디, 비밀번호, 이메일 유효성검사 및 데이터 넣을 수 있게 하기
4.All Questions 질문리스트 내부에 본문 일부 포함된 부분에 대해 논의하기
5.header non-login layout,css,handler 만들기
6.mapping css
7.로그인페이지와 login 연동
CT(1).오르막수라는 문제는 사실은 줄어들지 않는 숫자와 동일한 규칙을 가지고 있다...
다만 이 문제는 테스트케이스가 단 하나라서 더 편하게 input을 가져올 수 있다는 정도의 차이인 것 같다.
일반 숫자를 배열 테스트케이스가 들어갈 수 있게 업그레이드 한 경우는 많지만
아랫 단계로 내려본 경험은 처음인 것 같다.
생각보다 제거해야 할 코드들이 많아 신기했다.
CT(2).구간 합 구하기라는 문제는 특정 구간의 합을 구하는 문제로 이름은 쉬워보이지만 이차원 배열이 주어지고 테스트케이스는 10만개, 배열의 크기는 1024x1024로 단순 계산으로 처리가 가능하지 않을 것 같아 생각해보면 각 포인트까지의 구간합을 dp로 구해준 후 사각형의 우측하단 끝점 - 좌측하단 끝점 - 우측상단 끝점 + 좌측상단 끝점을 해주면 같은 결과가 나온다.
이렇게 처리하면 최대 천억번 이상의 계산에서 최대 1024^2번의 dp계산과 10만번의 단순계산으로 끝낼 수 있다.
문제는 다 구현헀고 테스트케이스도 다 되고 질문검색의 반례들도 다 처리가 되는데도 불구하고 정답 처리는 되지 않고있다.
난이도가 높아질수록 구현 난이도와 시간이 올라가고 정답률 비율도 낮아져서 문제를 풀기가 어려워지는 것 같다..
답답한 마음에 한번 더 확인을 했더니 console.log(console.log(result.join('\n')))로 올려버렸다.. 당황스럽다.
고통스러웠던 시간들이 무의미했던 것 같다.
해결 코드는 아래와 같다.
let input = `4 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
2 2 3 4
3 4 3 4
1 1 4 4`.split('\n') // 값 받아오기 (배열크기, 테스트 갯수, (x1,y1,x2,y2)
for(let i = 0 ; i < input.length ; i++){
input[i] = input[i].split(' ').map(Number) // 숫자로 변경해주
}
let size = input[0][0] //크기 받아오
let dp = [...input.slice(1, 1 +size)] //dp 바탕 받아오기
let xys = [...input.slice(1 +size)] //xy좌표값들이 담긴 배열 오류 때문에 시도했던 구조분해할당인데 큰 의미는 없는걸 알고있다..
let result = [] //최종 결과배열
for(let i = 0 ; i < size ; i++){ // 각 좌표는 그 좌표까지의 사각형으로 가정하고 구간합을 계산해줬다.
for(let j = 0 ; j < size ; j++){
if(i > 0 && j > 0){
dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + dp[i][j]
}
else if( j > 0 && i === 0){
dp[i][j] += dp[i][j-1]
}
else if ( j === 0 && i > 0){
dp[i][j] += dp[i-1][j]
}
else{
continue
}
}
}
for(let i = 0 ; i < xys.length ; i++){
let [a,b,c,d] = xys[i] //xy값들이 담긴 배열에서 하나씩 빼서 a,b,c,d로 구조분해할당을 해주고 그 값을 바탕으로 아래에서 계산한다.
if(a === 1 && b === 1){ //a,b값이 1일 경우 그냥 c,d의 값을 구해주면 되는데 dp는 0부터 시작하므로 뒤에서도 각각 1씩은 기본적으로 제외된다.
result.push(dp[c-1][d-1])
}
else if(a === 1 && b > 1){ // a만 1일경우 사각형 두개가 되어 오른쪽 덩어리에서 왼쪽 덩어리를 뺀다고 가정할 수 있다.
result.push(dp[c-1][d-1] - dp[c-1][b-2])
}
else if(b === 1 && a > 1){ // 위와 같지만 윗쪽 덩어리를 전체 덩어리에서 빼주면 아랫쪽 사각형이 남는다고 볼 수 있다.
result.push(dp[c-1][d-1] - dp[a-2][d-1])
}
else{ //시작점이 0(1)이 아닌 경우 좌측, 위측 구간합을 빼준 후 두 부분의 공통점인 구간합을 더해주면 현재 사각형의 구간합을 구할 수 있다.
result.push(dp[c-1][d-1] - dp[a-2][d-1] - dp[c-1][b-2] + dp[a-2][b-2])
}
}
console.log(result.join('\n')) // 모인 결과값들을 줄바꿈으로 출력'회고' 카테고리의 다른 글
| [Pre-Project 개발일지]-9 (0) | 2022.09.02 |
|---|---|
| [Pre-Project 개발일지]-8 (0) | 2022.09.01 |
| [Pre-Project 개발일지]-6 (0) | 2022.08.30 |
| [Pre-Project 개발일지]-5 (0) | 2022.08.29 |
| [Pre-Project 개발일지]-4(주말) (0) | 2022.08.28 |
