반응형

전체 글 140

백준 1644- 소수의 연속합 : 에라토스테네스의 체, 투 포인터 알고리즘

https://www.acmicpc.net/problem/1644 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다. 자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구..

20대의 6년 째 헬스하는 이야기

체력의 한계를 느껴서 30대부터 운동하게 된다는 유명한 떠다니는 이야기가 있다. 나의 경우, 그게 20살이었다. 남들보다 체력이 약하다는 건 단순히 체력이 약하다는 문제에서 그치지 않았다. 학업에 집중하기 위해 들이는 노력이 남들보다 배로 들었다. 오래 앉아있다보니 허리 디스크쪽에도 문제가 생겨 병원을 들락날락거리기 일쑤였다. 이게 지속되다보니 더 나은 삶을 꿈꾸기가 살짝 어려워지기도 했다. 내가 항상 이런식이라면 앞으로 일을 할 수 있을까..? 싶은 걱정이었다. 머리론 욕심껏 공부하고 싶어도 몸이 받쳐주지 않는 다는 건, 꽤나 좌절스러운 문제였다. 문제를 인식하고 난 후, 집 근처에서 헬스장에 등록해서 PT를 등록했다. 당시 감사하게도 문제를 공감해주셨던 엄마의 지원 덕이었다. 운좋게도 실력이 뛰어난 ..

끄적 2023.11.24

백준 1092 - 배 - 그리디

무게 제한이 더 큰 크레인이 더 무거운 물건을 드는 것이 유리하다. 그리디라는 것을 검증하기 위해 다음과 같은 과정을 거쳤다. - 무게 제한이 더 작은 크레인이 무게가 무거운 물건을 들었을 때의 정답이 있다. -> 무게제한이 더 큰 크레인이 그 물건을 들어도 정답이 될 수 있으므로, 합당하다. 부분구조가 가능하기 때문에 전체 구조가 가능하다는 논리하에 검증한 것이다. 위를 구현하기 위해 크레인의 무게 제한, 물건의 무게를 내림차순으로 정렬한뒤, 크레인이 물건을 순회하면서 들 수 있도록 했다. 다만, 크레인들은 무게가 무거운 물건은 스킵하되 더 가벼운 물건을 들 수 있도록 해서 전체 크레인이 최대한으로 물건을 들 수 있도록 했다. 크레인이 운반을 못하는 edge case는 무게 제한이 가장 큰 크레인이 무..

[Programmers] PCCP 기출문제 2

[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 세로길이가 n 가로길이가 m인 격자 모양의 땅 속에서 석유가 발견되었습니다. 석유는 여러 덩어리로 나누어 묻혀있습니다. 당신이 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 가장 많은 석유를 뽑을 수 있는 시추관의 위치를 찾으려고 합니다. 시추관은 열 하나를 관통하는 형태여야 하며, 열과 열 사이에 시추관을 뚫을 수 없습니다. 예를 들어 가로가 8, 세로가 5인 격자 모양의 땅 속에 위 그림처럼 석유가 발견되었다고 가정하겠습니다. 상, 하, 좌, 우로 연결된 석유는 하나의 덩어리이며, 석유 덩어리의 크기는 덩어리에 포함된 칸의 수입니다. 그림에서 석유 덩어리의 크기는 왼쪽부터 8, 7, 2입니다. 시추관은 위 그림처럼 설치한 위치 아래..

javascript의 .map 파일

.map 파일은 본론부터 말하자면 개발자가 디버깅하기 편하게 원본파일 - 특정 코드와의 매핑 파일로써 존재하는 파일이다. 특정 코드는 TypeScript 일수도, UglifyJS, minifyJS일수도 있다. (*UglifyJS: 난독화된 자바스크립트, minifyJS: 압축된 자바스크립트) 임베디드에서도 map 파일은 전역변수,함수의 주소를 기록해놓은 파일로써 존재한다. javascript도 그런 개념으로 map 파일을 가지고 있다. javascript는 에러가 발생했을 때 특정 행, 칼럼에 대한 정보를 주지 않는다. 따라서 원본과의 매핑파일인 source map 을 이용해서 디버깅하면 편한 것이다. 더 정확하게 설명한 source map은 압축된 코드와 압축된 코드를 Base64 기반으로 매핑한 데이..

개발/javascript 2023.11.19

백준1141 - 문자열, 그리디

https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 난이도: SILVER 1 java로 알고리즘을 푸는 것을 도전중이다. static main에 대해 모든 걸 static 으로 구현하는 점, input,output이 다른 점 등이 색다르다. 이번 문제는 접두사 부분집합의 최대개수를 다루는 문제이다. 해당 접두사들은 대표 접두사만 저장하고, 해당 접두사를 포함하는 문자열이라면 그냥 지나가는게..

JUnit

#개발 #java #테스트코드 정의: Java 생태계에서 제공하는 단위 테스트 프레임워크 (추가적으로 보고 싶은: - [Using Gradle in the Eclipse IDE](https://www.vogella.com/tutorials/EclipseGradle/article.html)) Junit Junit 테스트는, 테스트 목적으로 만들어진 클래스 내에서 @Test 어노테이션이 붙은 메소드이다. 기대값과 실제 값을 비교하는 assert 구문을 이용하여 테스트를 할 수 있다. 특히 실패했을 경우 @DisplayName 어노테이션을 통해, 출력하는 메시지를 정하여 보다 수월하게 확인할 수 있다. 예시 코드 package com.vogella.junit5; import static org.junit.ju..

개발/java 2023.11.03

자바스크립트의 작동 원리(V8 Engine)

#개발 #javascript 번역 (사이트1 사이트2) JavaScript는 Google의 V8엔진을 사용한다. 또한 싱글 스레드임과 동시에 콜백큐를 사용한다.이에 대해 자세히 알아보자. The Javascript Engine - Javascript engine은 프로그램 혹은 인터프리터로, 자바스크립트 코드를 실행하는 역할을 한다. 자바스크립트 엔진은 표준 인터프리터로 구현될 수도 있고, 혹은 자바스크립트를 단순히 bytecode로 컴파일 하는 컴파일러일 수도 있다. 자바스크립트 엔진을 구현하는 유명한 프로젝트에는 다음과 같은 것들이 있다. V8 : 오픈소스 , 구글이 만들었고 c++로 구현되어있다. Rhino : 오픈소스, Mozilla 기업이 만들었다. Java로 구현되어있다. SpiderMonke..

개발/javascript 2023.11.02

[실시간 채팅, 게임 서비스 ]transcendence - front와 user 식별자 공유하기 - userName은 안돼!

front에서 친구 목록과 함께 online/offline 상태를 보여주는 로직이 있었다. 친구가 소켓과 연결되는 순간 Back에서도 감지할 수 있기 때문에, 친구의 상태가 실시간으로 구현될 수 있었다. 프론트는 보여주는 게 userName밖에 없고, 친구 탭을 클릭하면 userName에 대해서 요청이 날라온다. 이럴 경우 문제점은, 친구가 자신의 userName을 변경한 경우, 다른 친구들은 업데이트된 목록을 갖고 있지 못하고, 예전 userName에 대해서 Back에 요청할 수 있다는 점이다. 이럴 경우 404 에러가 뜨게 된다. 문제 사황을 그림으로 표현하면 다음과 같다. 이러한 경우가 친구 목록. 받은 친구 요청 목록, 내가 차단한 유저 목록 이 3개에 모두 해당한다. 이를 위한 해결책으로 다음과..

교육/42Seoul 2023.10.18

쉘이란 무엇일까? (feat. bash-like program minishell)

https://devdocs.io/bash/what-is-a-shell_003f bash-like program, minishell을 올해 1-2월 새로 끝낸 적이 있는데, 쉘에 대해 정리하지 않았던 것이 늘 마음에 걸렸어서 작성하게 된 글이다. shell이란? command를 실행하는 macro processor 다. 라고 정의되어 있다. macro processor 라는 용어는 '텍스트 text'와 '기호 symbol' 를 확장하여 더 큰 표현을 생성하는 기능을 의미한다. Unix shell은 command interpreter 이면서 동시에 programming language 이기도 하다. shell의 특징 command interpreter 로써, shell 은 GNU utilities 와 함께..

카테고리 없음 2023.10.15
728x90
728x90