251014

lililllilillll·2025년 10월 13일

개발 일지

목록 보기
324/350

✅ 한 것들


  • 면접 대비 : 깃허브 리드미 채우기, 예상 질문 대비
  • 프로그래머스


📝 배운 것들


🏷️ 부동 소수점

보라 : 부호
빨강 : 지수
초록 : 소수 (비트가 1/2, 1/4 ... 를 의미)

Q. 십진법으로 소수 표현하면 되지 않음?
: IEEE 754에 Binary 뿐 아니라 Decimal도 있긴 한데 컴퓨터는 이진법 계산이 훨씬 빨라서 이진법 쓰는거



⚔️ 프로그래머스


캠핑

bool compare_y(vi a, vi b)
{
    return a[1] < b[1];
}

// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int n, vector<vector<int>> data) {
    int answer = 0;
    
    // 두 성분의 순위가 붙어있어야 한다
    // x에 대해 정렬, y에 대해 정렬
    // 정렬한 두 data를 순회하면서 map의 pair에 순위를 기록
    // for문 2개로 원본 data 순회하면서 두 성분의 순위차가 1인지 확인
    // 예외 : 외부에 있지만 순위만 추가시키는 요소들이 있으면 집계 안됨
    vvi xSortData = data;
    sort(xSortData.begin(),xSortData.end());
    vvi ySortData = data;
    sort(ySortData.begin(),ySortData.end(),compare_y);
    map<pii,pii> rank; // first : x, second : y
    
    int r = 1, pre = 0;
    int x, y;
    for(int i=0; i<n; i++)
    {
        x = xSortData[i][0];
        y = xSortData[i][1];
        if(pre == x) { rank[{x,y}].first = r; }
        else { rank[{x,y}].first = ++r; }
        pre = x;
    }
    r = 1, pre = 0;
    for(int i=0; i<n; i++)
    {
        x = ySortData[i][0];
        y = ySortData[i][1];
        if(pre == y) { rank[{x,y}].second = r; }
        else { rank[{x,y}].second = ++r; }
        pre = y;
    }
    int rix,riy,rjx,rjy;
    for(int i=0; i<n; i++)
    {
        for(int j=i+1; j<n; j++)
        {
            pii ip = {data[i][0], data[i][1]};
            pii jp = {data[j][0], data[j][1]};
            tie(rix, riy) = rank[ip];
            tie(rjx, rjy) = rank[jp];
            bool xgap1 = rix-rjx==1 || rix-rjx==-1;
            bool ygap1 = riy-rjy==1 || riy-rjy==-1;
            if(xgap1 || ygap1) answer++;
            // cout << ip.first << ' ' << ip.second << ' ' << jp.first << ' ' << jp.second << '\n';
            // cout << rix << ' ' << riy << ' ' << rjx << ' ' << rjy << '\n' << '\n';
        }
    }
    
    return answer;
}

아예 접근을 잘못 했다. 내일 다시.



profile
너 정말 **핵심**을 찔렀어

0개의 댓글