파이썬

    [백준 21760번-파이썬] 야구 시즌

    http://acmicpc.net/problem/21760 {코드} for _ in range(int(input())): n, m, k, d = map(int, input().split()) b = 2*d//(k*n*m*(m-1) + m*m*n*(n-1)) if b: print(m*(m-1)*n*k*b//2 + m*m*n*(n-1)*b//2) else: print(-1) {설명} A와 B의 관계를 알고, k가 주어지기 때문에 다음과 같은 식이 성립합니다. A*N*(M*(M-1))/2 + B*(N*(N-1))/2)*M*M

    [백준 21756번-파이썬] 지우개

    http://acmicpc.net/problem/21756 {코드} from math import log2, ceil n = log2(int(input())) print(int(2**int(n))) # --- # from math import log2 print(int(2**log2(int(input())))) {설명} 주어진 수가 n일때 답은 2^m

    [백준 4949번-파이썬] 균형잡힌 세상

    http://acmicpc.net/problem/4949 {코드} while True: s = input() if s == '.': break st = [] for i in s: if i not in '()[]': continue if i == '(' or i == '[': st.append(i) elif (i == ')' and st and st[-1] == '(') or (i == ']' and st and st[-1] == '['): st.pop() else: st.append(0) break print('no' if st else 'yes') {설명} 이 문제는 간단한 스택 문제로 뭘 스택에 넣고 뭘 무시하면 되는지 파악하면 간단히 풀 수 있는 문제입니다. 먼저 문자열을 입력받은 후 하나씩 돌면서..

    [백준 2580번-파이썬] 스도쿠

    http://acmicpc.net/problem/2580 {코드} import sys board = [list(map(int, input().split())) for _ in range(9)] zeros = [(i, j) for i in range(9) for j in range(9) if board[i][j] == 0] def get_possibles(r, c): possibles = set(range(1, 10)) possibles -= set(board[r]) test = set() for i in range(9): test.add(board[i][c]) possibles -= test test = set() for i in range(r//3*3, r//3*3+3): for j in range(c..

    [백준 19942번-파이썬] 다이어트

    http://acmicpc.net/problem/19942 {코드} def calculate(do, picked, pick_sum): global chosen, tot_prc if pick_sum[4] >= tot_prc: return for i in range(4): if req_nut[i] > pick_sum[i]: break else: chosen = picked.copy() tot_prc = pick_sum[4] return if do == n: return picked.append(do+1) for i in range(5): pick_sum[i] += nuts[do][i] calculate(do+1, picked, pick_sum) picked.pop() for i in range(5): pic..

    [백준 19941번-파이썬] 햄버거 분배

    http://acmicpc.net/problem/19941 {코드} n, k = map(int, input().split()) placement = list(input()) ans = 0 for idx in range(n): if placement[idx] == 'P': for i in range(max(idx-k, 0), min(idx+k+1, n)): if placement[i] == 'H': placement[i] = 0 ans += 1 break print(ans) {설명} 이 문제는 간단히 사람의 위치에서 양쪽으로 k의 범위(±k)에서 가장 왼쪽에 있는 햄버거를 고르면 되는 문제입니다. 가장 왼쪽을 고르는 이유는 맨 마지막 위치에 사람이 있다면 그 사람은 왼쪽에서만 햄버거를 찾아야하기 때문에 최..

    [알고리즘&자료구조] 큐 - C++/파이썬

    큐란? 원소가 넣은 순서대로 나오는 자료구조(First in First out-FIFO) 위 그림처럼 1->2->3의 순서로 들어가면 1->2->3의 순서로 나온다. 큐는 대기줄을 생각하면 되는데 예를 들어 게임 접속 대기열을 큐라고 하는 것을 떠올리면 된다. *큐는 맨 앞과 맨 뒤의 원소들만 고려하기 때문에 나머지 원소들에 대해서는 알 수 없다. 큐 메소드 큐의 메소드로 다음과 같은 것들이 있다: front - 맨 앞의 원소 반환 back - 맨 뒤의 원소 반환 empty - 큐가 비어있는지 확인: 비어있으면 0 아니면 1 pop - 맨 앞의 원소 삭제 push - 맨 뒤에 원소 삽입 size - 큐의 길이 반환 언어마다 차이가 있을 수 있으나 위 메소드들은 거의 필수적으로 있다고 봐도 무방하다. 스택..

    [알고리즘&자료구조] 스택 - C++/파이썬

    스택이란? 먼저 들어간 원소가 나중에 나오는 자료구조(Last in First out-LIFO) 위의 그림과 같이 1->2->3의 순서로 들어가지만 나올 때는 3->2->1의 순서로 나온다. 스택을 생각할 때 엘레베이터를 생각하면 먼저 들어간 사람이 뒤로 가게 되고 마지막에 들어온 사람이 문과 가장 가까이 서게 된다고 생각하면 된다. 아니면 뚜껑이 위에 하나만 있는 용기도 마지막에 넣은 것들이 가장 먼저 나오게 된다. *스택은 맨 위의 원소만을 고려하기 때문에 그 외의 다른 원소들은 맨 위로 오기 전까지는 그 값을 알 수 없다. 스택 메소드 스택의 메소드로는 다음과 같은 것들이 있다: pop - 스택의 맨 위에 있는(마지막으로 들어온) 원소를 삭제함 push - 스택에 새로운 원소를 추가함 isEmpty..

    [파이썬] GCP를 이용한 유튜브 자막 프로그램 {K-UZA}

    깃허브 K-UZA(이하 쿠자)는 저를 포함한 6명이 함께한 프로젝트로 GCP의 STT와 번역 기능을 활용한 유튜브 자막 추출 프로그램입니다. *이름의 유래는 K(Korean) 유(튜브)자(막 프로그램)입니다. 프로젝트 코드에 대한 설명은 생략하고, 프로젝트의 과정들에 대해 얘기해보도록 하겠습니다. - 약 4주간의 개발과정을 한 글에 적는 것이기 때문에 글이 길 수 있습니다. 코드를 보고 싶으신 분은 깃허브를 보시면서 하시길 바랍니다. 이 프로젝트는 저희에게 유용하게 사용될 수 있고 저희가 써본 적이 없는 것을 써보고 싶었습니다. 그래서 유튜브에 올라와있는 해외 튜토리얼 영상들을 좀 더 편하게 볼 수 있지 않을까? 하는 생각에 이런 프로젝트를 진행하게 되었습니다. 주제가 정해지고 나서는 먼저 어떤 서비스를..

    [파이썬] 네이버 날씨와 뉴스 자동화 - 이메일로 보내기

    라즈베리파이를 구매한 이유 중 하나가 계속해서 켜놓을 컴퓨터가 있었으면 좋겠다는 마음이 컸습니다. 물론 의미 없이 켜놓진 않을 테니 뭔가를 해야 했는데, 전 서버 구축과 자동화를 전부터 해보고 싶어서 오늘은 그 일환으로 자동화 프로그램을 만들었습니다. 전 밖에 나갈 때 날씨 확인하는 것을 자주 까먹어 다시 집에 들어와 옷을 껴입는다던지 우산을 챙긴다던지 하는 일이 종종 생깁니다. 근데 아침마다 이메일은 확인을 꼭 합니다.(미디엄에서 오는 뉴스레터가 꽤 흥미로운 내용이 많습니다.) 그래서 만약 이메일로 날씨와 뉴스가 전송된다면 어떨까?라는 생각을 했죠. 그렇게 해서 만들어진 것이 바로 MoT(Mail of Today) 입니다. 깃허브에 들어가서 코드를 보거나 다운로드하세요! 사용 언어: 파이썬 사용 라이브..