목록전체 글 (772)
컴공생의 다이어리
[HTML] img 태그 이미지 로드 실패시 대체(디폴트) 이미지 img 태그로 src 이미지 로드에 실패한다면 엑스 박스가 나오는데 따로 처리해주지 않는 이상 alt 속성에 넣은 텍스트를 보여준다. 이미지 로드 실패에 대해 대체 이미지를 적용한다거나 이미지를 숨기는 방법을 사용할 수 있다. 이 글에서 2가지 방법에 대해 짧게 정리해보려고 한다. 대체 이미지 onerror 속성에 대체이미지 경로를 아래와 같이 넣어주면 된다. 이미지 숨기기 onerror 속성에 아래와 같이 this.style.display='none'으로 설정을 하면 이미지 로드 실패시 이미지를 숨긴다. https://pingfanzhilu.tistory.com/entry/HTML-img-%ED%83%9C%EA%B7%B8-%EB%8C%8..
[GitHub Action] Matrix Strategy 동일한 작업을 다양하게 실행시키고 싶다면 Matrix Strategy를 사용하면 된다. 여러 운영체제에서 테스트를 돌린다던지 여러 버전을 사용하여 테스트를 진행할 수 있다. jobs..strategy.marix 하위에 job을 수행하고자 하는 matrix를 정의하면 정의된 변수들의 가능한 모든 조합의 수만큼 Job을 실행한다. step에서 matrix 변수를 사용할 때는 ${{ matrix.변수명 }} 의 형태로 사용해주면 된다. 아래 예시는 node-ver이 14, 16, 18인 경우에 대해서 node-version을 설정하여 돌리는 Job들을 수행한다. jobs: test: runs-on: ubuntu-latest strategy: matrix..

백준 16954번 : 움직이는 미로 탈출 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline wall_pos = set() # 벽 위치 for i in range(8): temp = input().rstrip() for j in range(8): if temp[j] == '#': wall_pos.add((i, j)) queue = deque([(7, 0)]) # 캐릭터 시작 위치 넣기 result = 0 direction = [(i, j) for i in range(-1, 2) for j in range(-1, 2)] # 이동할 수 있는 모든 방향 while queue and wall_pos: temp = s..

백준 16637번 : 괄호 추가하기 (문제 바로가기) 내 코드 N = int(input()) data = list(map(lambda x: int(x) if x.isdigit() else x, input())) result = -int(1e9) def calculate(num1, num2, s): # 연산자 s에 따라 계산처리 if s == '+': return num1 + num2 elif s == '-': return num1 - num2 elif s == '*': return num1 * num2 def dfs(idx, prev): global result if idx >= N: # 연산이 끝났을 때 result = max(result, prev) # 최댓값 갱신 return if idx + 3 <..
Java 배열 일괄 초기화 - Arrays.fill() 자바에서 배열의 모든 값을 지정한 값으로 초기화하는 메서드로 Arrays.fill()이 있다. 기존에 아래와 같이 for문을 사용해서 배열의 값을 초기화하지 않고도 간편하게 배열의 값을 초기화할 수 있다. int arr[] = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] = -1; } 1차원 배열 초기화 Arrays.fill(배열 변수, 초기화할 값) 의 인자를 넣어서 초기화하면 된다. 예시는 아래와 같다. import java.util.Arrays; public class ArrayFill { public static void main(String[] args) { int arr[] = ..
Python 빠른 입출력 파이썬에서 빠르게 데이터를 입출력하기 위해서는 sys 라이브러리를 활용하면 된다. 이 글에서는 빠른 입출력에 대해 정리하고자 한다. 빠른 입력 import sys data = sys.stdin.readline().rstrip() sys.stdin.readline() 으로 빠른 입력을 받을 수 있다. 이때, 데이터에 줄바꿈 문자(\n)가 포함되어 입력받아진다는 점을 주의해야 한다. 그렇기 때문에 입력을 받고 나서 rstrip() 함수를 사용하여 줄바꿈 문자를 제거해주어야 한다. 그리고 매번 sys.stdin.readline()을 계속 작성해주는 것이 번거로울 수 있다. 그럴 땐 변수에 저장해서 사용하는 방법을 활용할 수 있다. 아래의 경우에는 input이라는 변수에 저장을 하는데,..

백준 17779번 : 게리맨더링 2 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline def simulation(x, y, d1, d2): section = [0] * 5 # 구역별 인구 수 temp_c = y for r in range(x + d1): # 1구역 인구 합 구하기 if r >= x: temp_c -= 1 section[0] += sum(data[r][0:temp_c + 1]) temp_c = y - d1 - 1 for r in range(x + d1, n): # 3구역 인구 합 구하기 section[2] += sum(data[r][0:temp_c + 1]) if r < x + d1 + d2: temp_c += 1 temp_c = y + 1 fo..

백준 2023번 : 수들의 합 5 (문제 바로가기) 내 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class baekjoon_2023 { private static int N; private static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLin..

[NestJS] Task Scheduling NestJS에서 주기적으로 반복적인 작업을 처리하는 Task Scheduling을 위해서는 @nestjs/schedule 패키지를 활용하면 된다. 이 글에서는 Task Scheduling에 대해서 정리해보고자 한다. 제일 먼저 Task Scheduling에 필요한 패키지인 @nestjs/schedule과 @types/cron를 아래 명령어로 설치해준다. $ npm install --save @nestjs/schedule $ npm install --save-dev @types/cron scheduler 사용을 위해 @nestjs/schedule 패키지에 포함된 ScheduleModule을 import를 해줘야 한다. 공식문서에는 AppModule에 아래와 같이..
[NestJS] Global prefix NestJS로 api를 개발하면서 모든 api 주소에 아래와 같이 일일히 /api를 붙여주고 있었다. @Controller('api/test1') export class Test1Controller {} @Controller('api/test2') export class Test2Controller {} 공통적으로 api라는 prefix가 붙는 것에 대해 전역으로 설정해줄 수 있는지 찾아보다 setGlobalPrefix로 전역 설정이 가능한 것을 알게 되었다. src/main.ts 파일에서 아래와 같이 setGlobalPrefix() 메소드로 prefix를 한번에 전역 설정할 수 있다. const app = await NestFactory.create(Applic..