분류 전체보기

    [백준/BOJ/알고리즘/파이썬(python)]#9148:신나는 함수 실행[재귀]

    https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 재귀 호출을 하는 문제로 1. 리스트배열 할당을 20만큼씩 (20이 넘으면 어차피 조건문에서 걸리므로) 하는 것 2. 재귀배열이 있다면 재귀배열을 리턴, 아니면 구하는 조건문으로 넘어가는 것 이 두 가지를 신경써야한다. 파이썬 코드 import sys sys.stdin.readline arr = [[[0]*21 for _ in range(21)] for _ in range(21)] def w(a,b,..

    [백준/BOJ/알고리즘/파이썬(python)]#1978_소수 찾기[수학/에라토스테네스의 체]

    https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 에라토스테네스의 체: 에라토스테네스의 체는 소수를 찾는 방법으로 알고리즘은 다음과 같다. x의 배수를 모두 지우고(위의 사진처럼 컬러링) 마지막으로 살아남은 녀석들이 소수(prime number)다. import sys input = sys.stdin.readline N = int(input()) num_list = [] num_list=map(int, input().split()) prime_cnt=0 for i in num_list: #에리토스테네스의 체 fla..

    [백준/BOJ/알고리즘/파이썬(python)]#11725_트리의 부모 찾기[트리/그래프]

    https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 루트 1부터 시작해서 dfs로 탐색하는 알고리즘으로 풀었다. 방문유무 정보 저장하는 배열을 하나 만들고 방문하지 않았다면 부모노드를 업뎃하면서 dfs탐색하면 된다. 재귀로 한 번 풀고 큐로 한 번 풀었다. 파이썬 코드_재귀 풀이(recursion) #11725_recursion import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) N = int(input()) tree = [[] for _ in..

    [백준/BOJ/알고리즘/파이썬(python)]#1197_최소 스패닝 트리[MST/트리/그래프]

    https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net MST 문제를 풀어보려고 했는데 다 다이아몬드 문제 뿐이라.. 골드 문제를 찾아서 풀어보았다. 스패닝 트리(Spanning Tree)란 1. 모든 정점을 포함하고 2. 사이클(Cycle)이 존재하지 않는 트리다. 최소 스패닝 트리(Minimum Spanning Tree_MST)는 3. 가중치가 최소 되는 트리다. 크루스칼 알고리즘(Kruskal Alg..

    [백준/BOJ/알고리즘/파이썬(python)]#15649,#15650,#15651,#15652_N과M(1)(2)(3)(4)[순열/조합]

    https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net https://www.acmicpc.net/problem/15651 15651번: ..

    [백준/BOJ/알고리즘/파이썬(Python)]#9372_상근이의 여행[트리/그래프]

    https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 최소신장트리 문제를 찾아서 풀려고 했는데 다 다이아몬드 아니면 엄청 쉬운 문제 뿐.... 위의 스케치 그림과 같이 모든 국가를 순회하려면 노란색 선분만큼 지나야 한다. 그런데 모두 연결되어 있는 그래프가 예제로 나오므로 DFS BFS 순회를 하지 않아도 그냥 N-1(국가 수-1)만큼이 노란색 선분이다. import sys input = sys.stdin.rea..

    [백준/BOJ/알고리즘/파이썬(python)]#14888_연산자 끼워넣기

    https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 백트래킹으로 분류되어 있는 문제로 연산자 4개의 순열조합을 통해 연산을 진행하는 탐색 문제다. 재귀를 사용하는 방법도 있지만 시간적 비용을 줄이기 위해 반복을 사용하여 풀었다. 파이썬은 permutation이라는 매우 편한 itertools 라이브러리가 있어서 중복제거를 위한 조합 로직을 C나 C++처럼 다 짤 필요가 없다. 재귀를 사용한다면..

    [백준/BOJ/알고리즘/파이썬(Python)/C++]#14889_스타트와 링크

    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 파이썬은 combinations라는 아주 편~한 라이브러리로 코딩할 수 있다.(파이썬최고) start를 먼저 배정하고 나머지 빈 배열에 link를 배정하였다. 파이썬 코드 import sys from itertools import combinations input=sys.stdin.readline arr = [] N = int(input()) for i in range (N): arr.append(list(map(in..

    [백준/BOJ/알고리즘/파이썬(python)/C++/백트래킹]#15649_N과M(1)

    https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 문제로 파이썬으로하면 permutation으로 몇줄컷이 되는데 C++로 짜면 좀 더 복잡해진다. 파이썬 코드 import sys from itertools import permutations input = sys.stdin.readline N, M = map(int, input().split()) P = permutations(range(1, N+1), M) for i in P: pri..

    [백준/BOJ/알고리즘/DFS/그래프/파이썬(python)/C++]#2606_바이러스

    https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 그래프 이론(DFS/BFS)로 간단하지만 반례 때문에 좀 애를 먹었다. root를 빼고 계산해야한다. 트리처럼 상위하위노드는 고려안해도 그래프로 간단하게 풀 수 있는 문제다. 원래는 for문을 main에서 돌리고 DFS함수에서도 for문을 또 돌려서 visited를 확인했는데, 그러니 반례와 자꾸 답이 다르게 나와서 for문을 지우고 노드1로 DFS를 호출해서 거기서만 for문을 돌리니 오류가 없었다...

    [백준/BOJ/알고리즘/파이썬(python)]#2621_카드게임

    https://www.acmicpc.net/problem/2621 2621번: 카드게임 근우는 오늘 재미있는 카드 게임을 배우고 있다. 카드는 빨간색, 파란색, 노란색, 녹색의 네 가지 색이 있고, 색깔별로 1부터 9까지 숫자가 쓰여진 카드가 9장씩 있다. 카드는 모두 36(=4x9)장이다. www.acmicpc.net 단순 구현 문제로 꼼꼼함이 가장 결국 중요한...그런 문제다. 풀면서도 규칙 9개나 되는거..너무 귀찮고...생각보다 오래걸렸다 케이스 하나하나 따지다보니 너무 귀찮아서 예제 안 돌리고 그냥 제출했더니 틀리더라 연속적 숫자인 경우가 거꾸로인 경우를 생각 못했다. 귀찮아도 예제 하나하나 입력해보는 게 결국 오류를 줄이는 것 같다. C++은 도저히... 귀찮아서 못 하겠다.. 다음에... 파..

    [백준/BOJ/알고리즘/파이썬(python)/C++/그리디/정렬]#1449_수리공 항승

    https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 그리디 알고리즘과 정렬 알고리즘 정렬은 파이썬과 c++ 모두 STL 라이브러리로 한줄로 쉽게 끝난다. 정렬을 함으로써 그리디 알고리즘을 쉽게 구현할 수 있습니다. 파이썬 코드 #1449 N, L = map(int, input().split()) leak = list(map(int, input().split())) leak.sort() start = leak[0] end = leak..

    [백준/BOJ/알고리즘/파이썬(python)/C++/String]#1652_누울 자리를 찾아라

    https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 문자열을 다루는 문제다. 파이썬에서는 운좋게 넘어간건지 문제가 없었는데, C++에서는 처음에 지나간 자리인지 아닌지 체크해야하는 bool을 넣어야 오류가 안 났다. 파이썬 코드 n = int(input()) cnt_w = 0 cnt_h = 0 room = [] bed = [0,0] for i in range(n): #get input room.append(list(map(str,input..

    1주차 인공지능과 미래산업 특강(연사: 구글 코리아 김태원 전무)

    👩🏻‍🎨1주차 인공지능과 미래산업 특강(연사: 구글 코리아 김태원 전무)미술, 패션 AI로 컬러를 내맘대로 작품 큐레이션, 과거의 아티스트를 살아돌아와 강연하는 느낌을 냄. 전시회와 새로운기술(유투브)를 계속해서 가까이 하기. Moonshot Thinking 10X: 지향하는 목표가 10배로 과감하면, 우리가 해낼 수 있는 지점도 더 커진다. 이전과 다른 고민을 가지게 된다. 좀 더 과감한 문제에 관심 가지기. 구글과 유투브의 생태계.. 감사하는 마음. 디지털 생테계의 도움. 똑같은 컨텐츠라도 50년 넘게 하는 것. 컨텐츠에 대한 진정성. 시간이 지나면 같은 컨텐츠라도 받아들이는 사람들의 마음이 달라진다. 진정성 = Value x Action x Time Q&A:Q: 말씀하신 내용 중 매일 15%의 새로..

    [백준/boj/알고리즘/파이썬(python)/C++/DFS]#11724:연결요소의 개수

    https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 그래프이론_너비우선탐색, 깊이우선탐색 BFS DFS 문제 나는 DFS를 이용하여 풀었다. (BFS까지 나중에 풀어봐야지!) 파이썬 코드에서 계속 시간초과가 나서 그 원인을 보니 input() 이었다. 백준에서는 input()함수가 시간초과가 잘 난다고 하니 참고하시길..! sys 라이브러리 import해서 입출력하면 해결된다. 그리고 ..

    [선형대수/머신러닝] 머신러닝에 기초인 선형대수 정리

    머신러닝이 가장 기본적인 원리의 기초가 되는 선형대수 부분을 정리해보았다. 왜 머신러닝을 하면 수학, 특히 선형대수를 공부하라고 할까? 머신러닝은 가설 Wx+b와 실제 y를 반복적인 훈련(epochs)으로 가깝게 만드는 것(=최적화) 그 가장 기초가 되는 수학은 y = Wx+b 함수의 기울기 W와 bias b로 계산된다. linear한 함수를 regression 즉, 선형회귀. 참고: 동빈나 유투브 https://www.youtube.com/watch?v=ve6gtpZV83E

    [백준/boj/알고리즘/파이썬]#9655:돌 게임

    https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 백준 풀이가 너무 오랜만이라 쉬운문제인데도 한참을 고민했다. 예제가 5와 7인 경우 쭉 트리로 그려보았다. 베스킨라빈스31게임이랑 같은 원리다. 상대방이 해당 숫자가 걸리면 내가 무조건 이기거나 지거나. remain = int(input()) if remain % 2 == 0: print("CY") else: print("SK")

    [논문리뷰] Transformer_Attention is all you need(NIPS 2017)

    기존의 RNN과 CNN 아키텍처의 단점들을 보완하여 등장한 새로운 혜성 같은 모델, Attention Sequential한 특징을 가지는 Recurrent 모델들과 다르게 병렬 처리가 가능하다. 모델 아키텍처 Encoder와 Decoder로 이루어져있다. Encoder 레이어(층)끼리 임베딩 sub-layer 등 모든 차원을 512로 통일. Stage1_out = Embedding512 + TokenPositionEncoding512 #w2v결과 + pos정보 Stage2_out = layer_normalization(multihead_attention(Stage1_out) + Stage1_out) Stage3_out = layer_normalization(FFN(Stage2_out) + Stage2_o..

    [인공지능/AI]Few-shot Learning in NLP(자연어처리)

    Few-shot Learning 개념 메타 학습에서 나온 갈래로, "Learn to learn"으로 일컫는다. 적은 데이터와 적은 연산으로 학습을 진행한다. 대량의 데이터로 학습하는 일반적 딥러닝 방법론과 다르게, Few-shot Learning은 고양이, 개와 같은 동물 사진 몇개를 가지고 처음 보는 사진의 동물을 분류해냅니다. Few-shot Learning은 Training set, Support set, Query image를 필요로 한다. Training set으로 구분하는 법을 배우고, Query image를 인풋으로 Support set 중 어떤 것과 같은 종류인지 분류한다. 즉 Query image가 Support set과 같은지 다른 종류인지 판단하는 것. 하지만 Few-shot Lear..

    [의료공학/Bioengineering] Gene Expression 유전자 발현

    사전적 정의 유전자 발현(遺傳子發現, 영어: gene expression)은 DNA를 구성하는 유전 정보, 즉 유전자에 의해 생물을 구성하는 다양한 단백질이 형성되는 과정이다. -위키백과 Transcriptomics DNA(Genotype) ---(Transcription)--> RNA --(Translation)--> Protein --> Phenotype 사람의 몸을 구성하는 세포들은 모두 같은 DNA를 가지지만, 각 세포들은 모두 서로 다릅니다. 이는 transcription pattern이 서로 다르기 때문에 세포의 기능과 생김새가 다른 것. (transcriptomics 영역!) Transcription and Translation DNA와 RNA의 차이는 DNA: 정적 (chromosome 2..