목록Development (559)
컴공생의 다이어리
[js] 현재 위치 받아오기 - Geolocation API 자바스크립트에서 사용자의 현재 위치 정보를 브라우저에게 요청할 수 있는 방법으로 Geolocation API가 있다. 브라우저가 지원하는 Geolocation API는 navigator.geolocation으로 정의되어 있다. 현재 위치 받아오기 navigator.geolocation.getCurrentPosition() 메서드를 통해 현재 위치 정보를 받아올 수 있다. 메서드를 통해 현재 위치를 가져오는 것에 성공하면 GeolocationPosition 객체를 첫번째 콜백 함수의 매개변수로 전달하고 실패하면 두번째 콜백함수에 GeolocationPositionError 객체를 매개변수로 전달한다. 아래는 navigator.geolocation..
[GitHub Action] Secrets로 환경 변수 관리 GitHub Action의 workflow 안에 api 키, 관련 비밀번호 등 환경 변수를 숨기고 싶은 경우가 있을 것이다. 이를 숨기기 위한 방법으로 Secrets를 활용하는 것이 있다. 오늘은 이 방법에 대해 정리해보고자 한다. 과정 1. GitHub Action의 secrets을 등록하고자 하는 깃허브 저장소의 Settings>Security>Secrets and variables>Actions 메뉴에 들어간다. 2. New repository secret 버튼을 클릭한다. 3. Name에는 환경 변수의 키(변수명)에 해당하는 값을 입력하고 Secret에는 키에 해당하는 값을 입력한다. 4. 앞서 secret으로 저장한 환경변수에 대해 w..
백준 16928번 : 뱀과 사다리 게임 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) # N: 사다리의 개수, M: 뱀의 개수 board = [0] * 101 # 사다리와 뱀의 위치를 저장할 리스트 for _ in range(N + M): x, y = map(int, input().split()) board[x] = y # 사다리와 뱀의 위치를 저장 visited = [0] * 101 # 방문 여부를 저장할 리스트 queue = deque([1]) # 시작점 while queue: x = queue.popleft() if x == 100: # 도..
[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..