일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- DFS
- 프로그래머스
- 최소스패닝트리
- 동적계획법
- django
- 함밥
- SQL
- 마라마라빔
- 종합설계
- 그리디알고리즘
- 백트래킹
- 실습
- 소프트웨어공학
- programmers
- minimum spanning tree
- 장고
- DP
- B대면노래방
- 백준
- codetree
- MyPlaylist
- BFS
- 코드트리
- 데이터베이스
- 모각코
- 알고리즘
- Kruskal
- Bellman-Ford
- Planned
- 파이썬
- Today
- Total
목록분류 전체보기 (242)
Leta Learns
아 뻘짓해서 좀 오래걸렸다. ㅋㅋㅋ m, n의 최댓값이 100인 줄 알고 최솟값 구할 때 초기값을 101로 설정해놨었다. m, n의 최댓값은 10000이었다... 반례가 안 보여서 질문게시판 계속 찾아봤는데... ㅋㅋㅋ import sys input = sys.stdin.readline def is_prime(x): for i in range(2, x): if x % i == 0: return False if x == 1: return False return True m = int(input()) n = int(input()) mn = 10001 total = 0 for i in range(m, n+1): if is_prime(i): total += i if i < mn: mn = i if total =..
그렇게 안 어려워보여서 선택한 문제인데 풀이 방법을 생각하다보니 dp.....? 라는 생각이 들어서 슬펐다. (오래 걸리기 때문) 문제 보자마자 어떤 알고리즘을 사용해야 하는지 감이 잡혔으면 좋겠다. 조금 더 자세한 풀이는 2022.08.20 - [Coding/백준] - [Python] 백준 1010번 - 다리 놓기 [Python] 백준 1010번 - 다리 놓기 문제 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 letalearns.tistory.com import sys input = sys.stdin.readline t =..
문제 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net dp 규칙 찾느라 오래 걸렸다.. 0번째 행은 j+1랑 같은 수가 된다. dp를 만들 때 인덱스를 고려해서 맨 앞에 값을 하나씩 더 넣어줬으면 편리했을텐데 귀찮아서 안 했다. 이걸 해줬으면 아마 j+1이 아니라 j랑 같은 수가 될 것이다. i == j인 경우 다리 놓는 방법이 1가지이므로 해당 조건을 추가해주었다. 그 후부터는 dp[i][j] = dp[i][j-1] + dp[i-1][j-1]..
# 회원가입 김영한 MVC2 강의를 참고하면서 시작했다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2 Entity 만들 때 @NotEmpty를 사용하길래 따라했는데 기능 구현 후에 실행해봤더니 그 부분에서 에러가 발생하였다. @NotBlank 로도 해봤는데 똑같이 에러나서 그냥 annotation은 안 쓰기로 했다. Controller, Service에서는 signUp() 함수를 작성하고 Dao, Repository에서는 받아온 정보를 DB에 저장하는 것이므로 save() 함수를 사용했다. save()는 JPARepository에 이미 존재해서 구현하지 않아도 된다. 회원 가입한 후에 findById(id)를 통해서 조회를 해봤다...
문제 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 코드 풀이는 주석으로 적어놓았다. 모각코 시간에 풀었던 문제인데 감이 안 잡혀서 일단 무턱대고 풀었더니 말도 안 되는 코드가 나와서 구글링을 했다. 찾아보니 for - else문을 사용한 코드가 있길래 궁금해서 for-else문에 대해 조금 찾아보았다. for - else문은 for문이 break 등으로 중간에 빠져나오지 않고 끝까지 실행된 경우 else문이 실행되는 구문이다..
제일 처음 떠오른 방식으로 풀었는데 시간초과가 났다. 구글링 해보니 집합과 딕셔너리를 사용해서 푸는 문제였다. 실제 플젝할 때는 딕셔너리를 거의 쓸 일이 없어서 좀 어색한 것 같다. 딕셔너리 문제를 좀 풀어봐야 할 듯. import sys input = sys.stdin.readline n = int(input()) x = list(map(int, input().split())) x2 = sorted(list(set(x))) x_dic = {x2[i]: i for i in range(len(x2))} for i in x: print(x_dic[i], end = ' ') 며칠 전에 못 풀었던 리모컨 문제 풀어야 하는데...!!! 😅
문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 시간초과가 나서 다른 방법이 있는지 구글링했다. 중복 제거를 위해 set을 사용하고 그 후 딕셔너리를 사용하면 쉽게 풀리는 문제였다.. 딕셔너리 연습을 해야 하나.. import sys input = sys.stdin.readline n = int(input()) x = list(map(int, input().split())) x2 = sor..
#식당 검색 기능 구현 findByName(String name) search(String name) 다른 건 findByCategory 구현할 때랑 같아서 쉽게 했는데, 쿼리문 작성하는 게 조금 헷갈렸다. 검색한 가게 명이 포함된 가게는 다 반환해주어야 해서 like 문법을 사용해야 한다. spring boot query에서의 like 사용 방법: https://stackoverflow.com/questions/21456494/spring-jpa-query-with-like Spring JPA @Query with LIKE I'm trying to make a method in CrudRepository that will be able to give me list of users, whose usern..
문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 딕셔너리 value값 기준으로 정렬할 때 lambda를 사용해야 하는지 몰랐다. lambda 사용해서 정렬하면 튜플 형태로 바뀌기 때문에 유의해야 한다. 정렬 방법 모를 때는 웬만하면 lambda로 접근하면 된다고 생각해도 되려나. https://hello-bryan.tistory.com/78 [Python] Dictionary Sort (정렬) lambda Dictionary Sort Lambda 저번 ..
최빈값 구하는 거.. 왠지 더 쉬운 방법이 있지 않을까? 이렇게 오래 걸릴 리 없다. import sys input = sys.stdin.readline n = int(input()) num = [] for _ in range(n): num.append(int(input())) num.sort() print(round(sum(num)/n)) #산술평균 print(num[(n-1)//2]) #중앙값 #최빈값 cnt = {} for i in range(n): if num[i] not in cnt.keys(): cnt[num[i]] = 1 else: cnt[num[i]] += 1 cnt = sorted(cnt.items(), key = lambda x:(-x[1], x[0])) for i in range(le..