[220216] TIL

릿·2022년 2월 16일
0

TIL

목록 보기
5/28

프로그래머스 2022 카카오 기출 '신고결과받기'

function solution(id_list, report, k) {
    let answer = Array.from({length: id_list.length}, () => 0);
    let cnt = 0;
    let tmpArr = [];
    
    for (let i=0; i<report.length; i++) { // report를 2차원배열로 저장.
        tmpArr.push(report[i].split(' '));
    }

    for (let i=0; i<id_list.length; i++) { // tmpArr에 신고당한 사람 횟수 저장
        let cnt=0;
        let idCnt=0;
        let tmpArr1=[]; // 신고한 사람과 신고당한 사람의 배열을 저장한다.
        for (let j=0; j<tmpArr.length; j++) {
            if (tmpArr[j][1] === id_list[i]) {
                cnt++;
                tmpArr1.push(tmpArr[j]);
            }
            if (j === report.length-1) { // j가 인덱스 마지막 번호일 경우
                if (cnt>=k) { // cnt이 k보다 크거나 같을 경우
                    for (let k=0; k<tmpArr2.length; k++) {
                        let tmpArr2=Array.from({length: 2}); // 신고한 사람과, 신고한 사람 횟수를 저장한다.
                        for (let l=0; l<id_list.length; l++) {
                            if (tmpArr2[k]===id_list[l]) (answer[l])++; // tmpArr2[k]와 id_list[l]이 같을 경우, answer[l]++해준다.
                        }
                    }
                }
            }
            console.log(i, j, tmpArr[j][0], tmpArr[j][1], id_list[i], cnt, idCnt, tmpArr2);
        }
    }
    return answer;
}

let id_list = ["muzi", "frodo", "apeach", "neo"];
let report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"];
let k = 2;
console.log(solution(id_list, report, k));

-아직 해결 못한 것 : 같은 사람이 두번 신고했을 때 예외처리.

GRID강의

-grid-template-columns:

열의 길이를 한꺼번에 지정가능 ex) 100px 100px 50px; 또는 1fr 2fr 3fr;
*fr: 비율

-grid-template-rows:

행의 길이를 한꺼번에 지정 가능. 선언 방법은 위와 같음.

-repeat:

grid-template-columns와 grid-template-rows의 갯수와 크기를 한꺼번에 지정할 수 있다.
ex) grid-template-rows: repeat(3, 100px);

-minmax:

grid-template-columns와 grid-template-rows의 크기의 최소값과 최대값을 한번에 지정할 수 있다.
ex) grid-template-rows: repeat (3, minmax(100px, 300px));

-auto-fill:

사용자 화면크기가 얼마나 될지 모를 때 사용하는 키워드.
가진 공간에 셀을 최대한 많이 배치하기 위해서 사용.
ex) grid-template-rows: repeat (auto-fill, minmax(100px, 300px));
=> 비어있는 셀들을 만들어 공간을 채워준다.

-auto-fit:

사용자 화면크기가 얼마나 될지 모를 때 사용하는 키워드.
가진 공간에 셀을 최대한 많이 배치하기 위해서 사용.
ex) grid-template-rows: repeat (auto-fit, minmax(100px, 300px));
=> 남는 공간을 셀을 늘려서 채워준다.

-column-gap:

열 사이의 간격 지정

-row-gap:

행 사이의 간격지정

-gap:

열, 행 간격을 한꺼번에 지정 ex) 30px 10px;

-grid-auto-columns:

grid-template-columns으로 정의되지 않은 나머지 열들의 크기를 자동으로 해당값으로 지정해줌.

-grid-auto-rows:

grid-template-rows으로 정의되지 않은 나머지 행들의 크기를 자동으로 해당값으로 지정해줌.

-justify-contents:

그리드들을 수평으로 정렬.
ex) start / end / center / space-around / space-between

-align-contents:

그리드들을 수직으로 정렬. 꼭 높이값이 있어야 사용이 가능하다.
ex) start / end / center / space-around / space-between

-place-contents:

justify-contents와 align-contents를 한꺼번에 선언할 수 있다.

-justify-items:

각각의 아이템들이 수평방향으로 정렬됨.
ex) start / end / center

-align-items:

각각의 아이템들이 수직방향으로 정렬됨.
ex) start / end / center

-place-items:

justify-items와 align-items을 한꺼번에 선언할 수 있다.

-grid-template-areas:

  1. 우선 태그에 이름을 붙여줘야 함.
  2. 해당 태그의 이름을 grid-area속성으로 이름을 붙여준다.
    ex)
    header {
    grid-area: header;
    }
  3. grid-template-areas에 해당하는 영역을 차지해야할 영역만큼 써준다.
    ex)
    grid-template-areas:
    'header header header'
    'aside main main'
    'footer footer footer';

-grid-auto-flow:

어떻게 배치할 건지 정해지지 않은 아이템들을 자동배치 시킨다.
ex) row / column

-grid-column-start:

열의 시작을 라인번호로 지정.

-grid-column-end:

열의 끝을 라인번호로 지정.

-grid-column:

열의 시작과 끝을 한꺼번에 지정.

-grid-row-start:

행의 시작을 라인번호로 지정.

-grid-row-end:

행의 끝을 라인번호로 지정.

-grid-row:

행의 시작과 끝을 한꺼번에 지정.

-justify-self:

수평방향의 정렬을 지정. (해당 그리드만)

-align-self:

수직방향의 정렬을 지정. (해당 그리드만)

-place-self:

수평, 수직방향의 정렬을 한꺼번에 지정 (해당 그리드만)

-order:

시각적으로 보이는 순서 변경. 기본값 0. -1이 제일 앞자리.

profile
항상 재밌는 뭔가를 찾고 있는 프론트엔드 개발자

0개의 댓글