시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초128 MB81543470593710558.560%문제여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다.현재 Queue의 가장 앞에 있는 문서의 ‘중요도..
All contents

만약 페이지 조회 요청 순서가 1 -> 2 -> 1 이라면 총 세번 요청하게 됩니다.하지만 만약 해당 게시판이 커뮤니티처럼 데이터가 유동적으로 계속 바뀌는 것이 아니라 역사 자료 게시판(?)처럼 변동성이 낮다면 어떨까요?1을 받았을 때 1을 저장해뒀다가 1페이지를 다시 요청하면 이전에 받았던 정보를 다시 사용하면 되지 않을까요?이러한 처리를 캐싱 이라고 합니다.(알고리즘에도 많이 사용되죠!)오늘은 캐싱 기능을 추가해보겠습니다. 캐싱이 많으면 무조건 좋을까요? 그건 아닙니다. 왜냐하면 받은 데이터를 전부 저장해버리면 언젠가 메모리 overflow가 발생하기 때문입니다. 따라서 오늘은 한계점을 지정하고 그 한계를 벗어나면 메모리에서 삭제되도록 구현하겠습니다.테스트 추가하기app.test.js에 테스트를 추가..

저번 시간에 기본적인 테이블과 페이지네이션을 테스트코드까지 작성하여 개발했었습니다.TDD의 마지막은 언제나 리팩토링이어야 합니다!오늘은 그동안 미뤄왔던 리팩토링을 진행하겠습니다. 우선 APP의 기능을 3가지로 나눈다면1. 테이블2. 페이지네이션3. 게시글 로드 app.js에서 테이블과 페이지네이션의 상세 구현까지는 필요가 없으므로 이 두가지를 컴포넌트로 분리하겠습니다.간단하게 잘라내기 + 붙여넣기로 pagination.js와 post-table.js를 만들어줍니다. 그러면서 필요한 부분에 함수 분리도 해줍니다.사실, 이전까지 몰랐던 클래스 관련 ES2022의 새로운 기능들에 대해서도 알게 되었습니다!1. 이제 js에서 클래스 필드 초기화 가능2. 접근제어자 추가 관련 상세한 내용은 아래 게시글로 확인해..

changePage 함수가 비동기로 페이지를 변경한다.통과하지 않는 테스트 it("changePage 함수가 비동기로 페이지를 변경한다.", async () => { // changePage 함수가 Promise를 반환하도록 가정 const secondPageButton = document.getElementById("page-button-2"); await app.changePage(2); // 비동기 함수 호출과 완료를 기다림 expect(app.page).toBe(2); // 페이지 상태가 올바르게 변경되었는지 확인 expect(secondPageButton.classList.contains("current-page")).toBe(true); // 버튼의 클래스가 바뀌었..

/* 제목 스타일 */h1 { text-align: center; margin-top: 5%;}/* 테이블의 기본 스타일 설정 */table { width: 30%; /* 전체 너비를 차지하도록 설정 */ border-collapse: collapse; /* 테두리 겹치기 방지 */ margin: 20px auto; /* 마진 설정 */ font-family: "Arial", sans-serif; /* 폰트 스타일 설정 */ font-size: 16px; /* 글자 크기 설정 */ color: #333; /* 글자 색상 설정 */ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* 그림자 효과 */}/* 테이블 셀 설정 */th,td { padding: 12..
1. 잡페어 다 떨어졌다. . ㅋ나름 열심히 작성한 잡페어 서류.... 사실 딱 3개만 쓰긴 했지만전부 떨어져서 약간 충격을 받았다.그럼에도 어른은 여기서 울고 있을 수는 없지. Self 분석해보는 서류 탈락 이유! 1. 서류 스펙객관적으로 내 학벌이나 학점이 좋은건 아니다. 오히려 감점일까?그렇기때문에 다른 곳에서 채워야한다. 근데 심지어 어학도 낮다 (?)지금 내가 높일 수 있는건 오픽밖에 없으니 오픽을 채워야겠다.틈틈히 오픽공부해서 오픽 7월까지 오픽 IM2나 IM3는 받아야 겠다. 2. 최신 리액트 프로젝트가 없다.공통때 외에는 리액트를 안했는데.. 사실 공통 프로젝트는 첨부하면 오히려 감점일 것 같다.너무 엉망진창이라... (공통 특화 자율중에서 시간을 제일 많이 갈았는데 제일 퀄리티가 낮은게..
문제 링크문제N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)출력첫째 줄에 구한 0의 개수를 출력한다.아이디어재귀함수로 팩토리얼을 계산하여 구현했다.Java나 C++같은 경우에는 longlong으로 타입 선언을 한다던지.. 처리가 필요했겠지만 파이썬이라서 그냥 했다.제출 코드fact = [1, 1, 2]def get_fact(value): if len(fact) > value: return fact[value] else: fact.append(get_fact(value - 1) * value) return fact[value]N = int(input())n..

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.입력첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.출력입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.아이디어우선 육각형이라는 특징이 있으므로 이를 활용해서 규칙을 찾는 문제라고 생각했다.그래서 각 줄마다 차지하는 갯수가 1, 6, 12로 6의 배수라는..
문제어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.입력첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.출력첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.아이디어처음에는 이걸 이분탐색으로 해야하나? 하고 접근하다 숫자와 분해합의 크기가 비례하지 않는다는것을 ..
문제집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다.이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.)편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른다고 가..