[백준] 2422번 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 _ Python
·
Algorithms/Brute Fource
https://www.acmicpc.net/problem/2422 [초기 접근 방법(X)] 1. 주어진 아이스크림에서 3가지 조합을 모두 구한다. 2. 모든 조합 경우에서, 금지된 조합(x, y)가 포함될 시 총 count(nC3)에서 -1을 한다. 3. 가능한 조합 count를 출력한다. [생각] 위 접근 방법대로 풀면 시간복잡도가 O(M * nC3)이다. (M : 금지된 조합, N : 아이스크림 갯수) 금지된 조합에 대해 (x, y) (y, x) 에 대한 boolean 처리를 해주고, nC3 조합에 대해 금지된 조합이 있는지 여부를 판단하는 것이 효율적이다.. *어려운 문제는 아니였지만, 시간복잡도의 최적화에 대해서 고민한 문제였다. [코드] # 풀이 시간 : 20분 + 10분 # 시간복잡도 : O(..
[백준] 2412번 암벽등반 _ Python
·
Algorithms/Graph
https://www.acmicpc.net/problem/2412 [초기 접근 방법]1. (0, 0)에서 조건에 만족하는 홈을 찾아 큐에 넣는다.2. bfs를 돌려가며, 각 홈에서 조건에 만족하는 홈을 찾는다. + (x, y, dis)    조건 설정에서 틀렸다. ( ' )3. dis 값이 더 작은 것으로 유지한다.4. y좌표가 T일 때 함수를 종료한다. [생각]1. O(25억)인데 시간초과가 나지 않나..     역시 시간초과가 났고, set()을 활용해서 dot(홈)에 접근하는 속도를 높이려 했다.2. 이 역시도 시간초과.. dot(홈)을 전부 접근하려는 게 문제였다.     현재 위치를 중심으로, 범위 설정을 함으로써(lower_bound) 푸는 문제였다.3. queue의 pop 개념을 사용하려면,..
[백준] 15721번 번데기 _ Python
·
Algorithms/Brute Fource
https://www.acmicpc.net/problem/15721 [초기 접근 방법] T번째 '뻔' or '데기'의 위치를 구해야 한다. 1. "뻔" or "데기"의 개수(degiCnt)가 T 이상이 때까지, lst를 늘려준다. 2. 뒤에서 x = (degiCnt - T) 번째 인덱스를 %A(사람 수) 출력 → 원탁에서 몇 번째에 있는지 출력 [생각] 일반적인 구현 문제였다. [코드] # 풀이 시간 : 20분 # 시간복잡도 : O(T^2) # 공간복잡도 : O(T) # 참고 : - A = int(input()) T = int(input()) what = int(input()) result = [] n = 0 degiCnt = 0 while True: n += 1 # n회차 lst = [0, 1, 0, ..
7. 웹 계층 개발
·
Spring/JPA 1
1. 기본 디자인 resource.static 경로에 부트스트랩(css / js) 코드를 추가해준다. 2. @NotEmpty와 @Valid 어노테이션 1) @NotEmpty - 필드 값이 null과 "" 둘 다 허용하지 않게 한다. → 위 경우에 에러 발생 public class MemberForm { @NotEmpty(message = "회원 이름은 필수입니다.") private String name; } 2) @Valid - 데이터 바인딩 및 유효성 검증을 수행하는데 사용된다. @PostMapping("members/new") public String create(@Valid MemberForm memberForm, BindingResult result) { if (result.hasErrors())..
[백준] 11663번 선분 위의 점 _ Python
·
Algorithms/Binary Search
https://www.acmicpc.net/problem/11663 [초기 접근 방법] 1. 점들을 먼저 오름차순 정렬한다. 2. 각 선분의 시작점(upper)과 끝점(lower)의 index를 찾는다 시작점 : lower_bound 끝점 : upper_bound 3. 해당 index 범위 내의 dot 개수를 구한다. [생각] lower, upper bound 문제는 빠르게 이해함. 그러나 하나의 함수로 통일하고, 후처리 하는 과정에서 시간을 소모했다. (결국 따로 메소드 만듦..) [코드] # 풀이 시간 : 1시간 # 시간복잡도 : O(2MlogN) # 공간복잡도 : O(N or M) # 참고 : - import sys input = sys.stdin.readline # lower_bound def l..
[백준] 13397번 구간 나누기 2 _ Python
·
Algorithms/Binary Search
[초기 접근 방법] 1. 구간의 '최댓값' - '최솟값'이 작아야 한다. 2. 초기 구간은 '1개'이다. 3. 리스트의 길이를 중심으로 '최댓값 - 최솟값'(x)이 최소가 되게끔 2개의 구간을 만든다. 4. 위 구간들을 중 x가 가장 큰 범위를 다시 구간화한다. *문제점 : 맨 처음 중앙을 분기로 나눴을 때 정확하지 않음 [생각] 잘못된 접근법으로 디버그를 하면서 시간을 많이 썼던 문제.. 문제에서 구하고자 하는 '구간의 점수의 최댓값의 최솟값을'을 mid로 설정하고 접근하면 쉬운 문제이다. mid로 설정했을 때, 각 구간의 '최대 - 최소'가 mid보다 큰 구간인지 count 한 후, 이분탐색하면 된다. [코드] # 풀이 시간 : 1시간 20분 + 1시간 # 시간복잡도 : O(Nlog(max(lst))..