반응형

분류 전체보기 210

[백준/Python] 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net from collections import deque n, m = map(int, input().split()) value = list(map(int, input().split())) deque = deque([i+1 for i in range(n)]) count = 0 # 2, 3번 연산의 최소 횟수 for v in value: if v == deque[0]: # 찾는 수와 첫번째 값이 같다..

Algorithm/백준 2021.11.03

[백준/Python] 시리얼 번호

https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net n = int(input()) serial = [input() for _ in range(n)] # 숫자 합 구하는 메서드 def s_num(x): result = [int(n) for n in x if n.isdigit()] return sum(result) serial.sort(key=lambda x : (len(x), s_num(x), x)) # 길이 -> 숫자 합 -> 사전 순으로 정..

Algorithm/백준 2021.10.31

[SpringBoot] 10주차 스터디(AOP, 트랜잭션)

1. AOP (Aspect Oriented Programming) - AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 따라서 AOP를 통해 부가 기능을 모듈화할 수 있다. AOP를 사용하면 핵심 기능과 분리하여 부가 기능 중심으로 설계, 구현이 가능해진다. - 스프링에서 부가기능은 "어드바이스", 부가기능을 적용할 위치를 "포인트컷" 이라고 한다. 다음은 AOP를 통해 부가기능을 모듈화한 코드이다. 여기서 부가 기능은 사용자의 API 수행 시간을 측정하는 것이다. 부가 기능은 excute 메서드에 구현되어있다. @Arou..

Back-end/Spring 2021.10.23

[백준/Python] 절대값 힙

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import heapq, sys n = int(sys.stdin.readline()) heap = [] for _ in range(n): x = int(sys.stdin.readline()) if x == 0: # 절대값이 가장 작은 값 출력 if len(heap) == 0: print(0) else: print(heapq.heappop(heap)[1]) else: # 힙에 ..

Algorithm/백준 2021.10.23

[SpringBoot] 9주차 스터디 (페이징, JPA 연관관계)

1. 페이징(Paging) - 페이징은 모든 데이터를 무한 스크롤하여 보는 것이 아니라 페이지로 나눠서 데이터를 나눠서 볼 수 있는 것이다. 다음 사진처럼 데이터가 페이지마다 나눠져서 볼 수 있는 방식이다. 나만의 셀렉샵에서 페이징 처리하는 부분을 추가해보겠다. ProcductController 에서 "페이지 번호, 각 페이지의 상품 수, 정렬 방식, 오름차순 여부, 회원 정보" 를 입력받아 요쳥에 맞는 상품들을 ProductService 를 통해 조회한다. Pageable 은 쉽게 페이징 처리를 할 수 있도록 도와준다. @RestController // JSON으로 데이터를 주고받음을 선언합니다. public class ProductController { // 멤버 변수 선언 private final ..

Back-end/Spring 2021.10.17

[백준/Python] 카드

https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net [ 처음 코드 - 시간 초과 ] n = int(input()) cards = [int(input()) for _ in range(n)] print(max(cards, key = cards.count)) [ 최종 코드 ] 시간 초과가 나서 찾아보니 딕셔너리를 쓰면 시간 초과가 해결된다고 해서 딕셔너리를 사용한 코드로 바꾸었다! 딕셔너리로 해도 시간초과가 난다면 PyPy3 로 해보면 통과될 것이..

Algorithm/백준 2021.10.13

[백준/Python] 요세푸스 문제 0

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net n, k = map(int, input().split()) people = [i for i in range(1, n+1)] idx = 0 # 제거해야 할 위치 delete = [] # 제거할 순서를 담은 리스트 while people: idx = (idx + k - 1) % len(people) # 제거할 위치 구하기 delete.append(people.pop(idx)) print('') 1. idx는 리스트에서 제거해야 할 위치를 담고 있는 변수이고, delete는 제거해야 할..

Algorithm/백준 2021.10.10

[SpringBoot] 8주차 스터디 (단위테스트, 통합테스트)

1. 단위 테스트 - 단위 테스트는 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하는 것이다. 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있다. - JUnit을 사용하여 단위 테스트를 할 수 있다. 다음은 Product 클래스가 잘 동작하는지 확인하기 위한 단위 테스트 코드이다. 상품이 잘 저장되는지 확인할 수 있다. given 에 저장할 정보를 입력하고, when 에서 상품을 저장한다. then 에서 상품이 잘 저장이 됐는지 확인한다. class ProductTest { @Test @DisplayName("정상 케이스") void createProduct_Normal() { // given Long userId = 100L; String title..

Back-end/Spring 2021.10.07

[백준/Python] 후위 표기식2

https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net n = int(input()) postfix = input() nums = [int(input()) for _ in range(n)] stack = [] # 후위 표기식 계산 for p in postfix: if 'A'

Algorithm/백준 2021.10.07

[백준/Python] 괄호

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net [ 처음 코드 ] 처음엔 괄호 개수를 세는 것으로 코드를 짰었다. 하지만 ')(' 같은 반례 때문에 결과는 틀렸다고 나왔다....ㅜ n = int(input()) for _ in range(n): arr = list(input()) count = 0 while arr: now = arr.pop() if now == '(': count += 1 elif now == '..

Algorithm/백준 2021.10.06
반응형