반응형

분류 전체보기 135

백준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

linux - redirection 이란?

redirection 쉘은 redirection을 이용해서 명령어 파일을 복사하고, 열고, 닫고, 다른 파일에게 참조되고, 또는 다른 파일들을 바꿀 수도 있다. redirection으로 현재 쉘 실행 환경을 바꿀 수도 있다. redirectioin은 왼쪽에서 오른쪽으로 순서대로 가공되어 사용되는데, {변수 이름} 혹은 파일 디크립터 뒤에 redirection이 올 수 있다. 무슨 말인가 하면, >&- and &- and file 은 1> file 과 같은 의미가 되는 것이다. ls > dirlist 를 하면 dirlist에 ls 를 한 output이 저장된다. 즉 현 디렉토리 목록이 저장되는 것이다. >의 기본 좌측값은 1, standard ouput이기 때문에 이 명령은 곧 아래 명령과 같다. ls 1..

구름톤 챌린지 4주차 후기(2) - 18일차

교차점은 가로선과 세로선이 겹쳐서 만들어진다. 세로선, 가로선끼리는 서로 겹치지 않게 만들어지기 때문에, 세로선과 가로선이 서로 얼마나 겹치는 지에 따라 교차점의 개수가 달라진다. 예제1을 보면 아래 코드에서 주석처리된 표를 보면, 가로와 세로를 저장하는 배열을 만들어두었다가, 이 둘의 곱의 전체 합을 구하면 답이 된다. 초기 상태가 0이기 때문에, 교차하지 않는 경우엔 자동으로 0을 더하는 꼴이 되어 문제가 없다. 정답을 보자! #include using namespace std; long long garo[101][101] = {0,}; long long sero[101][101] = {0,}; long long N, M; long long ans= 0; /* 1 2 3 1 2 3 1 2 3 가로 :..

구름톤 4주차 후기 (1)

문제에서 요구하는 연합의 개수가 곧 우리가 평소 풀던 그래프 문제의 다리 역할을 한다. 하나만 연결되어있는 다리는 연합끼리 이어주기는 하지만 그 이상, 그이하도 아니다. 애초에 연합이어야 다른 연합이랑 이어질 수 있기 때문에, 연합인지 아닌지 판별해서 그래프 탐색을 하는게 중요하다. 따라서 처음엔 연합판별을 한 후 새로운 그래프를 만들어서 탐색하려다가, 그냥 평범한 BFS 에서 한번더 반대편 다리도 체크해서 queue에 넣는 작업 하나와, 2001 짜리 visited 배열로 섬 방문 여부를 확인할 수 있도록 했다. #include #include using namespace std; long long N,M; int graph[2001][2001] ={}; int visited[2001] = {}; /*..

구름톤 후기 3주차 (2)

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 이문제랑 같은 문제다. 보자마자 생각이 났지만 3주차는 DP 가 주제였기 때문에 혼란스러웠다. 대체 dp 로 어떻게 푸는 건지 너무 궁금하다. !!!! 유형이 틀린거라면 구름은 알고리즘 문제 만드는 사람 최소 10명을 뽑던지 이쪽 사업은 접는게 나을 것 같다. 너무 심각해.. 친구들이랑 같이 성취감있게 문제푸는 건 좋은데 덜 challenging 하고, 난이도가 낮은 점, 테스트케이스나 뭔가 에지케..

구름톤 3주차 후기 - 1

다이나믹 프로그래밍을 이용해서 구현했다. dp[i] = i의 통증을 0으로 만드는 데 필요한 최소 아이템의 개수 라고 정의하면, i의 통증이 생긴 경우는 i-A의 통증에 A 가 더해진 경우, i - B의 통증에 B 가 더해진 경우를 제외하고는 고칠 수가 없다. 다르게 말하면 i의 통증은 A의 아이템을 써서 i- A 의 통증으로 가라앉을 수 있고, B 아이템을 써서 i - B의 통증으로 가라앉을 수 있다.\ 그 외에 해당하는 통증은 해결 될 수 없다. 0통증을 해결하는 최소 아이템 개수 = 0이고, 이후에 [A] 통증을 해결하면 0 + 1, [B] 통증을 해결하는데 [0] + 1 개의 아이템이 필요하다. 쭉쭉쭉 가서 ... (i) 의 통증을 해결하는 개수는 (i-A) 의 통증을 해결하는데 필요한 개수 + ..

728x90
728x90