[TIL #28] Investments in 2016
·
Camp/T.I.L.
https://leetcode.com/problems/investments-in-2016/description/ 질문이 바로 이해가 가지 않아, 질문 이해에 약간의 시간이 더 투자된 문제. 같은 ``tiv_2015``의 값을 공유하는 레코드가 2개 이상 존재하는 레코드위도와 경도가 같지 않은(같은 위치가 아니고 고유한) 레코드이 레코드들을 찾아서 각각의 ``tiv_2016``값을 더해서 소수점 2자리까지 반올림진짜 이런 요구 사항이 실제로 존재할진 모르겠지만... 문제도 잘 다가오지 않고, 힌트도 이런 상황이다.당연한 걸 힌트랍시고 준 걸 보면, 너무 간단한 문제라고 생각했나 보다. 처음엔 문제를 제대로 이해하지 못해 "윈도우 함수로 밀면서 같고 다른 걸 체크해야 하나?" 같은,이상한 의문에 빠져있었다...
[TIL #27] 호텔 대실
·
Camp/T.I.L.
https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 왠지 이전에 했던 주차장 관리가 생각나던 문제.이 문제의 난도가 더 낮았던 것 같다. 시간들을 다 분으로 변환하고시작 시간 기준으로 정렬시간을 비교하며 최대 방 개수 관리이거면 끝나는 문제.  // 분단위 관리, 종료시간에 청소시간 추가let events = [];for (const [start, end] of book_time) { // 숫자만 남김 const [startHour, st..
[TIL #26] 함수 오버로딩의 함정
·
Camp/T.I.L.
정처기 실기 문제엔 다음과 같은 유형의 프로그래밍 문제가 나온다. // 다음 프로그램의 실행 순서가 어떻게 되는지 맞춰라!// 5 -> ...class Parent { int x, y; Parent(int x, int y) { // 1 this.x = x; this.y = y; } int getT() { // 2 return x * y; }}class Child extends Parent { int x; Child(int x) { // 3 super(x + 1, x); this.x = x; } int getT(int n) { // 4 return super.getT() + n; ..
[TIL #25] 전력망을 둘로 나누기
·
Camp/T.I.L.
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이제 이런 DFS 문제는 그렇게까지 부담스럽진 않은 것 같다.노드가 연결돼 있는 걸 뜯어보는 데엔 인접리스트가 좋은 방법이 될 것이다. 이런 네트워크가 있다고 했을 때, 어디를 끊어야 최대한 균형이 맞는 형태로 망을 나눌 수 있을 것인가?위 그림에선 [3, 4]나 [4, 7]이 유이한 해가 될 것이다. 모든 연결에 대해 끊어보면서 확인할 수 있을 것 같다.브루트 포스가 무식한 방법일 수도 있지만, 현..
[KPT 회고] 타워 디펜스 프로젝트의 KPT
·
Camp/Project
타워 디펜스 프로젝트가 완료되었습니다!지금까지의 프로젝트 중에선 역시 가장 만만하지 않았던 것 같습니다.그래도 꽤 좋은 결과가 나와서 기억에 남는 팀 프로젝트 및 팀원들이 될 것 같습니다...! 하지만, 빛을 받으면 그림자가 지는 법입니다.만족스러운 프로젝트 진행이었지만,여기에도 계속할 것(Keep), 문제였던 것(Problem) 그리고 해볼 법한 것(Try)이 존재합니다. 이번 타워 디펜스 프로젝트의 KPT는 다음과 같습니다. Keep사소한 작업도 코드 공유가 되어 팀원 전체의 프로젝트 이해도를 높인 것새로운 기능 추가를 위한 충분한 안정성 고려좋은 팀 분위기가 유지가 되어 소통에 잘 이루어 짐기능 추가를 위한 동기부여가 잘 되어 선순환이 되었음 Problem새 기능 추가를 위한 확장성에 대한 설계가 ..
[TIL #24] 행렬 테두리 회전하기
·
Camp/T.I.L.
https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이러한 행렬이 있다고 가정하자.여기서 특정 부분을 회전해야 하는데, 그 영역은 다음과 같이 주어진다.``(x1, y1, x2, y2)`` 만약 ``(2, 2, 5, 4)``라고 했을 때, 회전은 다음과 같이 이루어져야 한다.좌표는 배열의 실제 인덱스에 1이 더해진 형태로 주어짐을 알 수 있다. 사실 이런 문제만 나오면 쫄기만 했다.다차원 배열의 원소의 위치를 바꾼다는 게 머릿속에 잘 그려지지 않았기 ..
[TIL #23] Product Price at a Given Date
·
Camp/T.I.L.
https://leetcode.com/problems/product-price-at-a-given-date/ 테이블 ``Product``는 어떤 상품의 새로운 가격과 변경된 날짜의 정보를 갖고 있다.``2019-08-16``의 모든 상품의 가격 정보를 가져와야 한다.만약 변경 이력이 없을 경우 10으로 간주한다. 문제에서 준 예시는 이렇다. 이걸 보면서 생각을 해 보자. 일단 ``2019-08-16`` 후의 날짜는 다 쳐내야 한다``change_date``를 기준하여 내림차순으로 정렬그리고 ``product_id`` 별 가장 빠른 날자의 가격을 확인 - 여기까지 별도의 쿼리로 둔다이러면 기준 날짜 뒤에만 변경 로그가 있는 상품은 모르게 된다기준 날짜 이전에 변경 로그가 없는 상품 아이디를 찾아 가격에 `..
컴퓨터에서의 CPU란?
·
Camp/Standard
컴퓨터를 구성하는 모든 부품이 다 중요하지만, CPU만큼 중요한 부품은 없다 해도 과언이 아니다.실제로 모든 작업을 처리하고, 시스템의 스펙에 가장 큰 영향을 끼치는 하드웨어다. CPU란 무엇인가?CPU(Central Processing Unit) 컴퓨터 시스템에 있어 핵심 처리 장치로,프로그램에서 처리해야 하는 명령을 해석하고 실행하는 역할을 담당한다.이는 프로세서라고도 불리며, 인간의 두뇌와 같은 역할을 한다.  주요 구성 요소CPU의 구성요소는 위 이미지와 같이 크게 3개의 부분으로 나눌 수 있다. 1. 산술 논리 장치(ALU, Arithmetic Logic Unit)실제로 연산을 담당하는 부분이다.산술 연산(사칙 연산)과 논리 연산(AND, OR, NOT 등)을 수행한다.프로그램 로직의 실질적인 ..
[TIL #22] 실시간으로 달리는 공룡
·
Camp/T.I.L.
크롬 주소창에 ``chrome://dino/``를 입력하여 플레이할 수 있는 플랫포머 공룡 게임이 있다.군대에 있을 때, 종종 하곤 했는데 이렇게 다시 만날 줄이야... ``Socket.io``를 이용해 서버에서 플레이 데이터를 관리하게 하는 게 목표인 프로젝트이다.엎드리기는 없지만, 아이템을 획득해 추가 점수를 얻을 수 있다.이런 데서 오는 난관이 있기 마련.내가 힘들었던 부분은 다음과 같다.  1. 아이템 생성 및 검증기존엔 아이템이 무분별하게 생성됐다.모든 스테이지에서 전체 아이템 중에서 랜덤 하게 선택돼 생성됐다.여기선 스테이지 별로 생성되는 아이템을 차별화하고, 그 생성 간격도 관리해야 했다.이 생성 간격은 클라이언트에서만 관리하는 것이 아니라 서버에서 그 검증 또한 수행해야 한다. 일단 클라이..
컴퓨터에서의 메모리란?
·
Camp/Standard
컴퓨터에서의 메모리(Memory)는 데이터를 저장하기 위한 하드웨어 장치이다.인간도 중요한 행위를 위해 기억이 필요하듯이 컴퓨터도 데이터들을 기억할 필요가 있다. 메모리의 계층 구조메모리는 속도, 용량, 비용 등의 다양한 팩터에 의해 계층적으로 구성되어 있다.빠르고 용량이 크다는 두 마리 토끼를 모두 잡을 수 없기 때문에 특성에 따라 계층으로 구분된 것이다.  1. 레지스터 (Register)CPU 내부에 위치한 가장 빠른 메모리.연산에 직접 사용되는 데이터와 명령어들이 저장된다.용량은 매우 작으나, 속도는 가장 빠르다. 2. 캐시 (Cache)CPU와 주기억장치(보통 RAM) 사이에 위치한 메모리.주기억장치와 레지스터 간의 속도 차이가 매우 크기 때문에, 그 중간의 스펙을 가지는 메모리를 둔 것.L1,..