목록전체 글 (772)
컴공생의 다이어리
GitHub 이슈(issue) 템플릿 만들기 깃허브에서 같은 형식의 이슈를 여러번 생성한다면 템플릿을 사용하는 것이 좋다. 오늘은 이슈 템플릿 생성 과정에 대해 정리하고자 한다. 제일 먼저 해당 저장소의 Settings에 들어간다. 그 다음 스크롤해서 Features가 있는 영역에서 Issues 부분의 Set up templates를 클릭한다. 그 다음 아래와 같이 나오면 Custom template을 클릭한다. 그 다음 Preview and edit을 클릭한다. 클릭하면 아래와 같이 나오는데 연필 모양 수정 버튼을 클릭한다. 아래와 같이 나오면 템플릿 명과 설명 그리고 제일 중요한 템플릿 내용을 원하는 내용으로 채워주고 마지막으로 맨 위 Propose changes 버튼을 클릭한다. 참고로 템플릿을 만..
Spring Boot 배너 커스텀 Sprint Boot 애플리케이션을 구동하면 아래와 같은 시작 배너가 뜬다. 이 시작 배너를 내가 원하는 것으로 변경하는 방법에 대해 정리하고자 한다. 직접 그려서 만드는 방법도 있지만 아래 사이트에서 간편하게 배너를 생성할 수 있다. 본인이 배너를 직접 만들려고 하는 경우는 아래로 스크롤 해서 적용하는 방법부터 보면 된다. Text to ASCII Art Generator (TAAG) patorjk.com 위 사이트를 들어가서 배너에 사용할 텍스트를 입력하고 Font와 문자 크기 등을 아래처럼 자신의 상황에 맞게 설정해주고 생성한 배너 텍스트를 복사한다. 배너 적용하는 방법 Spring Boot 프로젝트 폴더의 src/main/resources 경로 아래에 banner..
[프로그래머스] N으로 표현 - 파이썬(Python) def solution(N, number): if N == number: return 1 dp = [{N}] for i in range(2, 9): # 숫자 n을 i번 사용할 때 nums = set([int(str(N) * i)]) # 기본으로 숫자 n을 i번 이어서 생성 for j in range(0, int(i / 2)): for x in dp[j]: # n을 j+1번 사용했을 때의 경우와 for y in dp[i - j - 2]: # n을 i-j-1번 사용했을 때의 경우 nums.add(x + y) nums.add(x - y) nums.add(y - x) nums.add(x * y) if y != 0: nums.add(x // y) if x !=..
[프로그래머스] 순위 - 파이썬(Python) from collections import defaultdict def solution(n, results): answer = 0 win, lose = defaultdict(set), defaultdict(set) for w, l in results: win[l].add(w) # 나를 이긴 사람 lose[w].add(l) # 나에게 진 사람 for i in range(1, n + 1): for w in win[i]: lose[w].update(lose[i]) for l in lose[i]: win[l].update(win[i]) for i in range(1, n + 1): if len(win[i]) + len(lose[i]) == n - 1: answer ..
[프로그래머스] 가장 먼 노드 - 파이썬(Python) from collections import deque def bfs(graph, start, n): visited = [0] * (n + 1) visited[start] = 1 queue = deque([start]) while queue: node = queue.popleft() for i in graph[node]: if visited[i] == 0: visited[i] = visited[node] + 1 queue.append(i) return visited.count(max(visited)) def solution(n, vertex): graph = [[] for _ in range((n + 1))] for a, b in vertex: gra..
[프로그래머스] 뉴스 클러스터링 - 파이썬(Python) from collections import Counter def solution(str1, str2): # 소문자로 변경 str1, str2 = str1.lower(), str2.lower() # 문자열 조각들 만들기 str1_set = list(str1[i:i + 2] for i in range(len(str1) - 1) if str1[i:i + 2].isalpha()) str2_set = list(str2[i:i + 2] for i in range(len(str2) - 1) if str2[i:i + 2].isalpha()) # 문자열 조각들 세기 str1_counter, str2_counter = Counter(str1_set), Counter..
[프로그래머스] 파일명 정렬 - 파이썬(Python) def solution(files): answer = [] data = [] # 정렬할 파일명 정보 저장 len_files = len(files) # 파일 수 for i in range(len_files): HEAD, NUMBER = '', '' for j in files[i]: if not j.isdigit() and not NUMBER: # HEAD 부분 HEAD += j.lower() elif j.isdigit() and HEAD: # NUMBER 부분 NUMBER += j else: # TAIL 부분 break data.append((HEAD, NUMBER, i)) data.sort(key=lambda x: (x[0], x[1], x[2])) ..
[프로그래머스] 방금그곡 - 파이썬(Python) def shap_to_lower(s): # 샵이 포함된 음을 소문자로 변경 s = s.replace('C#', 'c').replace('D#', 'd').replace('F#', 'f').replace('G#', 'g').replace('A#', 'a') return s def solution(m, musicinfos): data = [] m = shap_to_lower(m) for i in musicinfos: i = i.split(',') data.append([ int(i[1][:2]) * 60 + int(i[1][3:]) - (int(i[0][:2]) * 60 + int(i[0][3:])), # 재생시간 i[2], # 제목 shap_to_lower..
[프로그래머스] 게임 맵 최단거리 - 파이썬(Python) from collections import deque def solution(maps): len_x, len_y = len(maps), len(maps[0]) queue = deque([(0, 0)]) directions = [(1, 0), (-1, 0), (0, 1), (0, -1)] # 상하좌우 while queue: # bfs 수행 x, y = queue.popleft() for i in range(4): xx = x + directions[i][0] yy = y + directions[i][1] if 0
[프로그래머스] 캐시 - 파이썬(Python) from collections import deque def solution(cacheSize, cities): answer = 0 cache = deque(maxlen=cacheSize) if cacheSize == 0: # 캐시 크기가 0일 때 return len(cities) * 5 for c in cities: c = c.lower() # 대소문자 구분하지 않기 위해 모두 소문자로 변경 if c in cache: # 캐시에 있는 데이터라면 answer += 1 cache.remove(c) # 데이터 삭제 else: # 캐시에 없는 데이터라면 answer += 5 cache.append(c) return answer https://programmers...