https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문자열 입력에서 앞 뒤의 '[', ']' 와 숫자 중간의 ','를 제거한다. 2. 큐를 만들어 문자열을 넣는다. 3. flag를 만들어 R이 나오는 경우에는 -1을 곱해준다. 3. D가 나오고 flag가 1인 경우에는 앞에서 pop, flag가 -1인 경우에는 뒤에서 pop 해준다. 4. 마지막으로 flag가 -1이면 배열을 뒤집어준 후 조건에 맞춰 출력한다. import sys from collections import deque input = ..
분류 전체보기
import sys input = sys.stdin.readline arr = [] for _ in range(9): arr.append(list(map(int, input().rstrip()))) row = [[0]*10 for _ in range(10)] col = [[0]*10 for _ in range(10)] box = [[0]*10 for _ in range(10)] for i in range(9): for j in range(9): n = arr[i][j] row[i][n] = 1 col[j][n] = 1 box[i//3+j//3*3][n] = 1 def solve(cnt): if (cnt==81): for i in range(9): for j in range(9): print(arr[i][..
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 이전에 풀었던 문제인데, 백트레킹 문제를 너무 오랜만에 풀어서 감이 잘 오지 않았다. 이제는 주먹구구식으로 풀기보다 유형별로 정리해서 공부를 제대로 해야겠다.. 재귀를 이용해서 풀 수 있었다. import sys sys.setrecursionlimit(10**8) input = sys.stdin.readline N, S = map(int, input().spli..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 두 팀으로 나누는 걸 어떻게 구현해야 할 지 감이 잘 오지 않았다. 1부터 N명의 선수가 있을 때, 그 선수가 a팀에 들어가는 경우와 b팀에 들어가는 경우 두 가지 이므로,, 그걸 이용해서 백트래킹으로 풀 수 있을 것이라 생각했다. 그런데 파이썬은 시간초과가 나왔고, pypy는 15프로 정도에서 틀렸다고 계속 떠서.. 일단 파이썬 조합 라이브러리를 이용해서 풀었다. 처음에는 심지어 N은 짝수이고 N/2명으로 나눈다는 ..
https://www.acmicpc.net/problem/20301 20301번: 반전 요세푸스 첫째 줄에 정수 $N$, $K$, $M$이 주어진다. ($1 \leq N \leq 5\ 000$, $1 \leq K, M \leq N$) www.acmicpc.net 큐를 이용해서 푸는 것이라는 건 알았는데, 하나하나 pop할 때마다 K를 더해서 체크하는 방식으로 풀어가지고 계속 시간초과가 났다. 다시보니 굳이 그렇게 하지 않고 한번에 K-1번 혹은 반대인 경우는 K번 이렇게 돌면서 pop을 해주면 되는 것이었다. 이 방식을 잘 기억해야겠다. import sys from collections import deque input = sys.stdin.readline N, K, M = map(int, input()..
https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 스택을 이용해서 열린 괄호가 나타나면 스택에 추가하고, 닫힌 괄호가 나타나면 그 전의 괄호가 ( 인 경우에는 스택에서 하나를 pop 한 후에 스택의 길이 즉, 지금까지 있는 쇠막대기의 개수만큼 더해준다. 그 전의 괄호가 ( 가 아닌 경우에는 쇠막대기가 끝나는 것이므로 하나를 더해주고 스택에서 하나를 pop한다. import sys input = sys.stdin.readline s = list(input()..
https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 스택에 주어진 수의 앞에서부터 하나씩 넣으면서 기존에 있던 스택 top의 수가 새로 넣을 수보다 작은 경우에 더 크거나 같은 수가 나올때까지 그리고 스택이 비지 않을때까지 pop한다. 그렇게 했음에도 K번 pop되지 않은 경우에는 마지막에 출력할때 앞에서부터 N-K만큼의 길이만 출력하면 된다. 스택으로 구현하였는데, 기존에 푼 방법이 속도가 더 빨랐다. 이건 pop이 아니라 del을 사용했으며 마지막에 출력할 때 반복문을 사용하지 않고 join을 사용해서 그런 것 같다. 같..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 한 종류의 괄호만 있는 가장 기본적이고 간단한 괄호 해결 문제였다. 스택을 이용하여 구현하였다. import sys input = sys.stdin.readline T = int(input()) for _ in range(T): s = list(input().rstrip()) st = [] flag = True for i in s: if (i=='('): st.app..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_renew/dashboard 자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의 스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., 자바 스프링 프레임워크로 내 개발자 커리어에 봄이 www.inflearn.com 섹션 5. 연결 25강 커넥션풀 25-1 c3p0 모듈의 CompoPooledDataSource connection pool의 datasource는 예외처리 해줘야함 @Reposito..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_renew/dashboard 자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의 스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., 자바 스프링 프레임워크로 내 개발자 커리어에 봄이 www.inflearn.com 섹션 5. 연결 24강 JdbcTemplate 24-1 JDBC의 단점을 보완한 JdbcTemplate JDBC: 드라이버 로딩 > DB 연결 > SQL 작성 및 전송 > 자원해제 J..