분류 전체보기

    [백준/알고리즘] #1009: 분산처리 [파이썬(python)/수학]

    https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net #1009_분산처리 import sys input = sys.stdin.readline T = int(input()) A=[] B=[] for _ in range(T): a,b = map(int,input().split()) A.append(a) B.append(b) for i in range(T): one = A[i] % 10 if one == 0: print(10) elif one in [1,5,6]: ..

    [백준/알고리즘] #2750: 수정렬하기 [파이썬(python)/정렬]

    https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net import sys input = sys.stdin.readline N = int(input()) n = [] for _ in range(N): n.append(int(input())) n.sort() for i in range(N): print(n[i], end='\n')

    [백준/알고리즘] #2468: 안전 영역 [파이썬(python)/DFS/BFS]

    https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 처음엔 문제를 대충 읽고 단순히 4를 기준으로 물이 잠기고 안 잠기는거를 BFS로 카운트하는 문제인줄 알았다. 답이 자꾸 다르게 나와서 다시 읽어보니 '물에 잠기지 않는 안전한 영역이라 함은 물에 잠기지 않는 지점들이 위, 아래, 오른쪽 혹은 왼쪽으로 인접해 있으며 그 크기가 최대인 영역을 말한다. ' 라고 적혀있었다. 기존의 BFS문제 구현과 다르게 행열크기만큼 반복문을 "그 최대인 크기"만큼 또 매번..

    [백준/알고리즘] #7576: 토마토 [파이썬(python)/DFS/BFS]

    https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 이 문제는 시작 지점이 2곳 이상인 좌표를 동시에 BFS 구현하는 문제다. 기존에 풀었던 BFS 유형과 다르게 재귀가 아니라 큐에 토마토 판을 백업해둔 후, 방향좌표로 색칠하고 개수를 세는 문제다. 파이썬 코드 #7576_토마토 import sys from collections import deque input = sys.stdin.readline def bfs(): dx = [-..

    [백준/알고리즘] #5622: 다이얼 [파이썬(python)/문자열]

    https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 처음엔 아스키코드로 바꿔 정수로 계산할까 했었는데, 더 복잡해질 것 같아서 그냥 인덱스별 묶은 리스트를 선언해서 인덱스로 계산했다. 이게 훨씬 간단한 것 같다. 1은 비어있는 다이얼이라 그냥 _ 널값을 넣었고 마지막 2초도 따라서 계산해주지 않았다. 파이썬 코드 #5622_다이얼 import sys input = sys.stdin.readline word = input() alph = ['_','ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'..

    [백준/알고리즘] #18352: 특정 거리의 도시 찾기 [파이썬(python)/DFS/BFS]

    https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 첫 번호를 지정하는 문제는 처음이라 deque() 선언하고 append로 X를 넣었었는데 채점하다가 60%쯤에서 자꾸 틀렸습니다 로 떴다. 다른 풀이들 참고해서 처음 큐 선언부터 deque([X])로 해주니 해결되었다. visited를 다 0으로 채워서 선언하는 게 익숙했었는데, visited에 카운트하는 경우에는 아예 in..

    [백준/알고리즘] #1890:점프 [파이썬(python)/DFS/BFS]

    https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 처음에 문제를 이해 못해서... 결국 예제 하나하나 그려보고나서야 이해했다...ㅎㅎ 예제 따라 저렇게 3가지 경우의 수가 나오므로 답이 3이다. 간단한 DFS/BFS 정석적인 문제 같은데 또 새로운 풀이의 DFS/BFS 문제여서 고민했다. (많이 많이 풀어보는 수 밖에......) 갈 수 있는 방향이 목표지점까지로만 갈 수 있도록 제한되어있다. 사이클은 안된다. 오른쪽과 아래쪽으로만 움..

    [백준/알고리즘] #2667: 단지붙이기 [파이썬(python)/DFS/BFS]

    https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net DFS/BFS를 이용해서 각각의 기준점 별 거리계산하는 문제다. 문제에 "오름차순으로 정렬하여 출력"을 제대로 못 봐서 첫시도에 틀렸다. 문제를 똑바로 잘 읽자! ^^ dfs와 bfs 둘다 이용하여 풀어보았다. bfs는 큐를 두고 좌표로 이동하며 카운트하고 dfs는 카운트를 글로벌 변수로 두고 재귀로 풀이하였다. 이런 문제에서는 둘 다 수행시간이 비슷한가보다. 파이썬 코드 #2667_단지번호붙이기_..

    [백준/알고리즘]#4963: 섬의 개수 [파이썬(python)/그래프/DFS/BFS]

    https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net https://hidemasa.tistory.com/136 [백준/알고리즘]#1303: 전쟁-전투 [파이썬(python)/그래프/DFS/BFS] https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 ..

    [백준/알고리즘]#1303: 전쟁-전투 [파이썬(python)/그래프/DFS/BFS]

    https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 그래프 DFS/BFS이론을 통해 푸는 문제다. BFS/DFS도 유형별로 푸는 방법이 달라지는데, 이 문제의 경우는 각각 기준점 별로 거리를 계산하는 문제다. 이와 비슷한 문제로는 #2667: 단지번호 붙이기 https://www.acmicpc.net/problem/2667 #4963: 섬의 개수 https://www.acmicpc.net/problem/4963 가 있다. ..

    [백준/알고리즘] #7795: 먹을 것인가 먹힐 것인가 [파이썬(python)/이분탐색(binary search)

    https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 이분탐색을 이용해서 정렬하는 로직을 짜는 문제다. 파이썬 코드 #7795_먹을것인가 먹힐것인가 import sys input = sys.stdin.readline def bin_search(target, data): start = 0 end = len(data)-1 res = -1 while start

    [백준/알고리즘] #2548: 대표 자연수 [브루트포스]

    https://www.acmicpc.net/problem/2548 2548번: 대표 자연수 첫째 줄에는 자연수의 개수 N이 입력된다. N은 1 이상 20,000 이하이다. 둘째 줄에는 N개의 자연수가 빈칸을 사이에 두고 입력되며, 이 수들은 모두 1 이상 10,000 이하이다. www.acmicpc.net 이 문제는 대표 자연수가 중간값이라는 것을 캐치하면 굉장히 간단하게 풀 수 있는 문제다. divmod()라는 함수를 사용하면 쉽게 구할 수 있다. 파이썬 코드 #2548_대표 자연수 import sys input = sys.stdin.readline N = int(input()) real = list(map(int,input().split())) real.sort() left, right = divmo..

    [백준/알고리즘] #2910: 빈도 정렬

    https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net set를 이용해서 정렬할 줄 알면 되는 문제다. 파이썬 코드 #2910_빈도 정렬 import sys input = sys.stdin.readline N, C = map(int, input().split()) message = list(map(int, input().split())) cnt = {} for i in message: if i not in cnt: cnt[i]=0 cnt[i] += 1 cnt=sorted(cnt.items(),..

    [백준/알고리즘] #10821: 정수의 개수 [문자열]

    https://www.acmicpc.net/problem/10821 10821번: 정수의 개수 숫자와 콤마로만 이루어진 문자열 S가 주어진다. 이때, S에 포함되어있는 정수의 개수를 구하는 프로그램을 작성하시오. S의 첫 문자와 마지막 문자는 항상 숫자이고, 콤마는 연속해서 주어지지 www.acmicpc.net S= input() num = S.split(',') print(len(num))

    4주차 인공지능과 미래산업 특강_의료 AI: 배경과 응용(연사: Do AI 이효석 CTO

    4주차 의료 AI: 배경과 응용(연사: Do AI 이효석 CTO) -발표를 잘하는 법 유머를 활용하라_책 추천 콜레라 시대의 사랑 1 백년 동안의 고독 항상 세 가지 이유를 댈 것 -DoKaryotype:-이미지 인식 및 분류 염색체 수와 구조 이상을 판별 -암 환자의 5년 생존율은 얼마 정도 될까요? 암종에 따라 크게 다르다. "정확하고, 저렴하고, 빠른" 선별 검사의 필요성 결론: 문제 속에 답이 있다. - -문제 설정의 중요성 -Q&A: 의료분야 AI 주요 이슈 중에 AI가 실제 진단과 상관 없는 Short cut을 학습하는 문제가 있다고 알고 있는데 현장에서는 어떻게 대처하고 있는지, 실제 의료분야에 적용하려면 어떤 해결법이 있을지 궁금합니다! →조속한 합리적인 판단 필요. explainable ..

    [백준/알고리즘] #1448: 삼각형 만들기 [파이썬(python)/수학]

    https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 중학교 수학에서 배우는 삼각형의 개념을 통해 풀면 된다. 가장 긴 변의 길이 < 나머지 두 변의 길이 합 파이썬 코드 #1448_삼각형 만들기 import sys input = sys.stdin.readline N = int(input()) straw=[] for _ in range(N): straw.append(int(input())) straw.sort(reverse=T..

    [백준/알고리즘]#2659: 십자카드 문제 [파이썬(python)/구현]

    https://www.acmicpc.net/problem/2659 2659번: 십자카드 문제 입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다. www.acmicpc.net 십자수를 구하는 로직 하나 짜고, 입력된 값의 십자수가 1111부터 몇번째 십자수인지 구하면 된다. 처음엔 문제를 잘못 이해해서 입력된 값의 십자수가 1111부터 몇번째 값인지만 구했는데 틀렸다. 틀린 파이썬 코드 #2659_십자카드 문제 import sys input = sys.stdin.readline clknum = int(''.join(input().split())) clk=list(map(int,str(clknum..

    [백준/알고리즘]#6896: 절사평균 [파이썬(python)/부동소수점]

    https://www.acmicpc.net/problem/6986 6986번: 절사평균 첫째 줄에 절사평균(N, K)를, 둘째 줄에 보정평균(N, K)를 각각 소수점이하 셋째 자리에서 반올림하여 둘째 자리까지 출력한다. 예를 들어 결과값이 9.667인 경우 9.67로, 5인 경우 5.00으로, 5.5인 경우 www.acmicpc.net 절사평균과 보정평균을 구하는 방법은 쉬운데 float를 사용한다는 점을 유의해야한다. 첫 시도에는 round()로 단순하게 반올림을 했다가 실패했는데 테스트케이스 답이 다 맞아도 틀리는 이유가 부동소수점 밖에 없겠다는 생각이 들었다 float를 다루어 나누기 때문에 정수로 먼저 숫자를 바꾸어 (10이상의 수를 곱해주기) 계산해주고 마지막에 다시 그 숫자로 나누어준다. (C..

    [백준/알고리즘]#11652: 카드 [파이썬(python)]

    https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net try except문을 사용하여 카운트하였다. 정렬을 한 후에 첫번째 인덱스를 출력하면 된다. 파이썬 코드 #11652:카드 import sys input = sys.stdin.readline N = int(input()) card=[] for _ in range(N): card.append(int(input())) cnt={} for i in card: try: cnt[i]+=1 excep..