일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MyPlaylist
- 데이터베이스
- programmers
- 최소스패닝트리
- minimum spanning tree
- 백트래킹
- 모각코
- 프로그래머스
- 알고리즘
- Planned
- 종합설계
- SQL
- 백준
- 동적계획법
- 실습
- Bellman-Ford
- B대면노래방
- 마라마라빔
- 코드트리
- 장고
- DFS
- 소프트웨어공학
- DP
- Kruskal
- django
- BFS
- 그리디알고리즘
- 파이썬
- 함밥
- codetree
- Today
- Total
목록Coding (86)
Leta Learns
N과 M (4) https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net n과 m (3)의 방식에서 고른 수열이 비내림차순이어야 한다는 조건만 고려해주면 된다. s 변수를 사용하여 시작하는 지점부터 for 문을 돌려주었다. import sys input = sys.stdin.readline def dfs(s): #s: start if len(ans) == m: print(*ans) return for i in range(s, n+1): ans.appe..
문제 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net n과 m (3)은 같은 수를 여러 번 골라도 된다는 것이 (1), (2)와 달랐다. (1), (2) 에서는 for문 안에 if i not in ans: 라는 구문을 넣어서 수 하나는 한 번만 들어가게 조건을 걸어주었다. (3)에서는 이 조건문을 빼주었다. 코드를 복붙한 후 지운 게 아니라 처음부터 푼 거라서 (1), (2) 코드랑 디테일은 다르다. import sys input = sys...
문제 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net n과 m ... 구상하기가 쉽지 않다. n과 m (1) 이랑 비슷한데 (2)에서는 오름차순의 수열만을 골라야 했다. ex) [1,2]와 [2,1] 중에서 [1,2]만 취급해야 함 n과 m (1)에서는 for문을 1 ~ n 까지 다 돌렸었는데 이번에는 for문을 돌릴 때 시작점인 s 변수를 두어 s부터 for문을 돌렸다. 이 부분을 생각해내는 게 조금 어려웠고 나머지는 n과 m(1)과 유사하..
문제 https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 문제가 이해가 안 돼서 한참 멍 때렸다. 테이프 길이가 L이고 좌우로 0.5씩 간격을 주어야 하므로 L-1 만큼을 막을 수 있다. 물이 새는 곳을 리스트로 받아 정렬한 후 물이 새기 시작하는 곳을 갱신한다. 현재 새는 곳보다 시작점이 큰 경우에는 이미 테이프로 막고 있는 것이기 때문에 고려할 필요가 없다. 따라서 시작점이 현재 새는 곳보다 작은 경우에만 시작점을 갱신하고 횟수..
문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 보물 문제만 풀기에는 조금 양심에 찔려서 어려워했었던 재귀, 백트래킹 파트 연습하려고 n과 m 하나 풀었다. 시간이 많이 걸리진 않았지만 연습이 많이 안 되어있는 파트라서 쉽진 않았다. 백트래킹 개념 한 번 더 공부하고 풀었다. import sys input = sys.stdin.readline def dfs(d): if d == m: print(*ans) return for i in ra..
문제 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 기초부터 다지는 알고리즘 스터디라지만,, 지금 실력에 비해 너무 쉬운 문제를 푼 건 아닌지.. ㅋㅋㅋ하지만 오늘치 금방 끝내서 너무 좋다.. import sys input = sys.stdin.readline n = int(input()) a = list(map(int, input().split())) b = list(map(int, input().split())) a.sort() s..
문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 이중 for문 안 쓰려고 슬라이싱 했다. ㅋㅋ import sys input = sys.stdin.readline n = int(input()) time = list(map(int, input().split())) time.sort() w = 0 #대기시간 for i in range(n): wait = time[:i+1] w += sum(wait) print(w)
문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 끝나는 시간 기준으로 정렬한 후에 시작하는 시간 기준으로도 정렬해주어야 한다는 거 깜빡해서 틀렸다. ㅋㅋ 그리디 기본 문제 좋아 import sys input = sys.stdin.readline n = int(input()) meet = [list(map(int, input().split())) for _ in range(n)] meet.sort(key=lambda x:(x[1], x[0])) t = 0 #time cnt = 0 for i in range(n): if t
문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 이중 for문 사용했다가 가뿐하게 시간초과 걸렸다. 리스트로 입력받은 후에 집합으로 바꿔주어 교집합 리스트를 만들어서 해결하였다. import sys input = sys.stdin.readline n, m = map(int, input().split()) nh = [input().strip() for _ in range(n)] #not hear ns = [input().strip() fo..
문제 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net ㅋㅋㅋㅋ아무 생각 없이 for문 사용해서 풀었더니 4중 for문이 나왔다 껄껄.. 당연히 시간초과 났고 ㅋㅋ 일이 있어서 나가야 했기 때문에 고치지 않고 놔두었다가 오늘 다시 풀었다. 다른 사람들 풀이를 보니 boolean 연산자를 사용하길래 나도 참고하여 풀었다. startswith 메소드 파이썬 처음 공부할 때 보고 실제로 쓰는 건 처음인데 이런 문제에 꽤나 유용한..