분류 전체보기(137)
-
백준 [ALGORITHM] - BABBA (9625)
동적 계획법을 이용해 해결해야하는 문제이다. 동적 계획법을 공부하기 위해 풀었는데 난이도도 적당하고 개념을 잘 익히고 응용 할 수 있었다 n = int(input()) s =[[0,0] for _ in range(n+1)] s[0] = [1,0] s[1] = [0,1] for i in range(2,n+1): s[i][0] = s[i-2][0] +s[i-1][0] s[i][1] = s[i-2][1] +s[i-1][1] s = ' '.join(map(str, s[n])) print(s)
2023.04.16 -
백준 [ALGORITHM] - 스택 (10828)
import sys N = int(sys.stdin.readline()) stack = [] def push(n): stack.append(n) def pop(): if len(stack) != 0: a = stack[-1] stack.pop() print(a) else: print("-1") def size(): print(len(stack)) def empty(): if len(stack) == 0: print("1") else: print("0") def top(): if len(stack) == 0: print("-1") else: print(stack[-1]) func_dict = { "push" : push, "pop" : pop, "size" : size, "empty" : empty, "t..
2023.04.15 -
백준 [ALGORITHM] - 이상한 곱셈 (1225)
a,b = map(str,input().split()) list_a = [a for a in a] list_b = [b for b in b] num = 0 for i in range(len(a)): for j in range(len(b)): num += (int(list_a[i]) * int(list_b[j])) print(num) 이렇게 제출하였는데 시간초과가 발생하였다. 2중 for문에서 숫자가 커질경우에 경우의 수가 매우 많아지기 때문에 요구 되는 시간이 많이 늘어나서 그런 것 같다. a,b = input().split() a,b = list(map(int,a)), list(map(int,b)) result = sum(a) *sum(b) print(result)
2023.04.08 -
백준 [ALGORITHM] - 합분해 (2225)
처음에는 itertools를 이용해서 제출하였다. 하지만 이는 시간복잡도가 기하급수적으로 증가되기 때문에, 시간제한인 2초를 넘기게 되고 dp를 이용하여 해결하였다
2023.04.05 -
백준 [ALGORITHM] - 잃어버린 괄호 (1541)
잃어버린 괄호라는 문제이다. 해당 코드를 짜기 전에 가장 오래 생각 했던 부분은 어디에 괄호를 넣어야 가장 작은 수가 나오는지? 이다. 예를 들어, 10-20+30-40이 주어졌다고 생각해보자. 여기서 양수인 숫자가 -로 변했을 때, 수가 더 작아지게 된다. 따라서 음수 뒤에 양수가 온다면 괄호에 포함시켜주면 된다는 것이다. 따라서 원래라면 10-20+30-40 = -20이 나와야 하지만. 10-(20+30)-40 = -80이 나오게 된다. 참고로 문자열을 입력 받고 난 후 계산은 파이썬의 eval함수를 이용하였는데, 여기서 나는 굳이 괄호를 사용하지 않고, 배열을 이용하여 -사이에 있는 값을 더해주고, 새로운 배열에 옮겨서 10 - 50 - 40 을 eval에 넣고 돌렸다. import re def p..
2023.04.01 -
[CTF] LINE CTF 2023 - old pal
This challenge is written in perl. #!/usr/bin/perl use strict; use warnings; use CGI; use URI::Escape; $SIG{__WARN__} = \&warn; sub warn { print("Hacker? :("); exit(1); } my $q = CGI->new; print "Content-Type: text/html\n\n"; my $pw = uri_unescape(scalar $q->param("password")); if ($pw eq '') { print "Hello :)"; exit(); } if (length($pw) >= 20) { print "Too long :("; die(); } if ($pw =~ /[^0-9a-..
2023.03.26