일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- springsecurity
- 스프링부트
- java
- yaml-resource-bundle
- 프로그래머스
- springdataredis
- AWS
- 액세스토큰
- githubactions
- 소셜로그인
- 백준
- oauth2
- 도커
- 트랜잭션
- 스프링
- 티스토리챌린지
- 파이썬
- JIRA
- 스프링시큐리티
- docker
- 데이터베이스
- 오블완
- 토이프로젝트
- CI/CD
- 메시지
- Spring
- springsecurityoauth2client
- 리프레시토큰
- 재갱신
- 국제화
- Today
- Total
목록Algorithm (22)
땃쥐네

문제 플랫폼 : 백준 번호 : 14503 제목 : 로봇 청소기 난이도 : Gold 5 로봇 청소기가 청소하는 칸의 개수를 출력 문제 : 링크 필요 지식 주기성과 나머지 : 무언가 주기적으로 반복되면, 배열의 요소를 순환하면서 반복하는 경우가 많은데 이 경우 순환 과정에서 인덱스를 벗어나게 되는 경우가 많다. 이런 상황에서는 나머지 연산을 사용하면 편리하다. 이 문제는 방향 배열을 사용하면 편리한 문제다. 방향 배열의 순서도 아무렇게 두기보다, 문제에서 주어진 조건에 맞게 시계 또는 반시계 방향으로 배치하면 편리하다. 문제에서는 북동남서 순으로 0,1,2,3을 제시해줬는데 이는 시계방향이다. 왼쪽 방향으로 순서대로 바라보므로 반시계 방향으로 순회할 때는 0, -1, -2, -3, ...(인덱스를 벗어나는데..

문제 플랫폼 : 백준 번호 : 02606 제목 : 바이러스 난이도 : Silver 3 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성 문제 : 링크 필요 알고리즘 DFS BFS 풀이 풀이1 : DFS import sys print = sys.stdout.write input = sys.stdin.readline n = int(input()) graph = {i: [] for i in range(1, n + 1)} check = [False] * (n + 1) for _ in range(int(input())): s, e = map(int, input().split()) graph[s].append(..
문제 플랫폼 : 프로그래머스 번호 : 131128 제목 : 숫자 짝꿍 난이도 : Level 1 두 정수 X, Y가 주어졌을 때 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들(중복 허용)을 이용하여 만들 수 있는 가장 큰 정수 반환 문제 : 링크 필요 지식 파이썬의 경우 카운터를 잘 사용하면 정말 쉽게 풀 수 있는 문제다. 문자열 처리 Python : Counter 풀이 from collections import Counter def solution(x, y): c = Counter(str(x)) & Counter(str(y)) return '-1' if not c else '0' if len(c) == 1 and '0' in c else ''.join(sorted(c.elements(), reverse..

문제 플랫폼 : 프로그래머스 번호 : 042889 제목 : 실패율 (2019 KAKAO BLIND RECRUITMENT 출제) 난이도 : Level 1 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성 문제 : 링크 필요 지식 Counter 사용 정렬 풀이 from collections import Counter from typing import List def solution(n: int, stages: List[int]): results = [[i, 0, 0] for i in range(0, n + ..

문제 플랫폼 : 백준 번호 : 02018 제목 : 수들의 합 5 난이도 : Silver 5 자연수 N을 연속된 자연수의 합으로 나타내는 가지수를 출력 문제 : 링크 필요 알고리즘 투포인터 0부터 시작한 연속된 정수에게 남은 수를 균등하게 분할하기 풀이 풀이1 : 투포인터 사용 n = int(input()) lt, rt = 1, 2 count = 1 # 자기 자신을 센 것 sum = 3 while lt 15 15 = (0 + 1) + 14 -> 연속된 숫자 2개에 14를 둘로 나눠서 분배 가능 (o) -> 7 + 8 15 = (0 + 1 + 2) + 12 -> 연속된 숫자 3개에 12를 셋으로 나눠서 분배 가능 (o) -> 4 + 5 + 6..

문제 플랫폼 : 백준 번호 : 24389 제목 : 2의 보수 난이도 : Bronze 1 2의 보수는 해당하는 숫자의 모든 비트를 반전시킨 뒤, 1을 더해 만들 수 있다. 이때, 32비트 기준으로 처음 표현했던 수와 그 2의 보수의 서로 다른 비트 수를 출력하기 문제 : 링크 필요 알고리즘 비트의 합 연산 두 비트 a, b가 있을 때 비트의 합 연산은 다음과 같다. carry_out은 자리 올림이고, sum은 해당 자리에 남는 수이다. carry_out : a and b sum : a xor b 풀이 bits_a = [True if bit == '1' else False for bit in bin(int(input()))[2:].rjust(32, '0')] bits_b = [not bit for bit i..
문제 플랫폼 : 프로그래머스 번호 : 012926 제목 : 시저 암호 난이도 : Level 1 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성 문제 : 링크 필요 지식 파이썬의 아스키 코드 처리 ord('문자')는 해당 문자의 아스키 코드 번호를 변환한다. 예) ord('0') -> 48 chr(아스키코드)는 해당 아스키 코드를 문자로 변환한다. 예) chr(48) -> '0' 풀이 풀이1 : 아스키 코드 활용 def solution(s: str, n: int): chars = [] for ch in s: if ch.isupper(): chars.append(chr(ord('A') + (ord(ch) - ord('A')+ n) % 26)) elif ch.is..
문제 플랫폼 : 프로그래머스 번호 : 077884 제목 : 약수의 개수와 덧셈 난이도 : Level 1 left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 문제 : 링크 필요 지식 수학 풀이 파이썬으로 풀었다. 풀이1 : 순수하게 약수 전부 카운팅 def solution(left, right): counts = [0, 1, *([2]*(right-1))] for i in range(2, right + 1): for j in range(2 * i, right + 1, i): counts[j] += 1 return sum(i if counts[i] % 2 == 0 else -i for i in range(left, right +..