분류 전체보기

    [백준] 2578번 : 빙고 (Python)

    문제 코드 코드는 다음과 같은 방식으로 구현했다. 일단 철수의 빙고판은 2차원 배열로 받고, 사회자가 부르는 숫자는 하나의 리스트로 받았다. 1. 사회자가 숫자를 하나씩 부르며 그 숫자와 일치하는 빙고판의 숫자는 0으로 변환함과 동시에 빙고인지 확인한다. 2. 일치하는 숫자의 위치를 기반으로 빙고를 체크한다. 가로와 세로는 항상 체크하며 일치하는 숫자의 위치가 대각선이라면 대각선 방향으로도 빙고를 확인한다. 3. 빙고가 3개 이상이라면 지금까지 부른 숫자의 갯수를 출력한다. import sys board = [] count = 0 bingo = 0 # Make bingo board (2D-metrix) for i in range(5): board.append(list(map(int, sys.stdin.r..

    [OpenCV] Template Matching으로 다른 그림 찾기

    OpenCV의 Template Matching을 사용하여 이미지상에서 템플릿 이미지와 유사한 오브젝트를 찾을 수 있다. 쉽고 빠르게 구현이 가능하지만, 템플릿 이미지와 픽셀들을 비교하여 구분하기 때문에 방향이 다르거나 크기가 다른 경우에는 찾을 수 없다는 단점이 있다. Template Matching in OpenCV OpenCV에서 제공하는 cv.matchTemplate() 함수는 템플릿 이미지를 입력받은 이미지상 위에서 좌측상단부터 우측으로 이동시키면서 대응하는 픽셀들과 비교한다. 제공되는 비교 방법은 다음과 같다. cv.TM_CCOEFF cv.TM_CCOEFF_NORMED cv.TM_CCORR cv.TM_CCORR_NORMED cv.TM_SQDIFF cv.TM_SQDIFF_NORMED cv.matc..

    딥러닝이란 무엇일까?

    딥러닝은 무엇일까? 지난 몇 년간 인공지능(Artificial Intelligence)은 일상 속 다양한 부분에서 접할 수 있었고, 이 용어는 더 이상 낯설지 않게 되었다. 그리고 그런 AI와 항상 같이 언급되는 머신러닝(Machine Learning), 딥러닝(Deep Learning)은 무엇을 의미하고 어디에 활용될까? 머신러닝은 인공지능의 하위 분야이며, 딥러닝은 이런 머신러닝의 하위 분야로 여긴다. 이 글에서는 이 용어에 대해서 각각 알아보고 설명하고자 한다. 1. 인공지능 인간의 지능을 모방한 인공지능 인공지능은 인간의 지능을 기계나 컴퓨터를 통해서 모방하고자 만들어진 개념이다. 인간의 인식, 판단, 추론 그리고 그에 대한 말이나 행동, 학습과 같은 인간의 지능을 이해하는 컴퓨터 시스템을 의미한..

    [백준] 1655번 : 가운데를 말해요 (Python)

    문제는 간단하다. 숫자를 하나씩 받고 지금까지의 숫자들 중에서 중앙값을 답하면 된다. (단, 짝수의 경우 두 수 중에서 작은 값을 답해야 한다) 처음에는 정말 간단하게, sort()를 통해서 중앙값을 답하였으나, 역시나 시간 초과. 이를 해결하기 위해서는, 매번 중앙값을 찾기 위해서 sort()하는 과정을 생략해야 한다. 해결과정은 다음과 같다. 숫자 리스트를 두 가지로 나누어서 생각한다. 왼쪽에는 작은 값들이, 오른쪽에는 큰 값들이 들어간다. 왼쪽의 리스트에서 가장 큰 값은 중앙값이다. 위의 조건이 만족하도록 숫자를 입력한다. 숫자는 왼쪽, 오른쪽 번갈아가며 채우며, 왼쪽에 오른쪽보다 큰 숫자가 들어가는 경우 두 숫자를 교환한다. 즉, 왼쪽의 가장 큰 값과 오른쪽의 가장 작은 값을 비교한다. 이를 위해..

    눈바디 AI Challenge Wrap-up

    Project Outline Task 눈바디 사진을 이용해 각 신체 부위(body parts) 별로 Semantic Segmentation AI 모델 개발 Metric inference 방식으로 제출. 별도의 Public, Private 구분 없음. mIoU (Mean Intersection over Union) : 각 클래스 별 IoU를 계산하고, 이 값들의 평균을 구한다. Dataset "Dense coco2014 데이터 셋" 및 "Alchera에서 제공한 데이터 셋" 제공. 데이터 셋 labeling은 다음과 같다. (배경 - 0 / 몸통 - 1 / 오른손 - 2 / 왼손 - 3 / 왼발 - 4 / 오른발 - 5 / 오른쪽 허벅지 - 6 / 왼쪽 허벅지 - 7 / 오른쪽 종아리 - 8 / 왼쪽 종아..

    [프로그래머스] 가장 큰 수 (Python)

    정수 리스트에서 조합 가능한 가장 큰 수를 찾는 문제. 처음에는 직관적으로 가능한 조합을 모두 찾은 뒤 그중에서 가장 큰 수를 출력해봤다. import itertools def solution(numbers): answer = [] number_list = list(itertools.permutations(numbers, len(numbers))) for number in number_list: answer.append("".join(map(str,number))) return max(answer) 당연하게도 순열로 가능한 조합을 만드는 과정이 시간이 많이 걸려서, 시간 초과로 fail. 다음으로 생각한 방법은 숫자의 앞자리를 기준으로 내림차순으로 숫자를 정렬하기. def solution(numbers)..

    [프로그래머스] 주식가격 (Python)

    처음에는 단순하게, 시간이라는 배열을 만들어서 가격들에게 각 시점마다 현재 시점의 가격과 비교해서 떨어지지 않을때마다 1초라는 값을 추가 해줬다. 추가로 한번 떨어진 것은 flag를 통해 다시 비교하지 않도록 만들었다. def solution(prices): answer = [0] * len(prices) flag = [0] * len(prices) for time, price in enumerate(prices): if time == len(prices)-1: break for i in range(time+1): if prices[i] prices[j]: break else: cnt += 1 answer.append(cnt) return answer

    [백준] 9663번 : N-Queen (Python)

    코드의 구현 자체는 간단하다. DFS를 돌면서, 조건에 맞도록 구현하면 된다. 발목을 잡았던 부분은 바로 시간초과였다. 15 * 15의 경우 상당한 연산 시간이 필요하기 때문으로 보인다. 이미 이전의 퀸들이 있는 곳은 제외하고 넘어가도록 해야 최대한 시간을 아껴야 통과할 수 있다. 결국 PyPy3에서는 성공했지만, Python3에서는 여전히 시간초과가 발생했다. Python3에서도 성공하려면 뭔가 다른 방법이 필요할 것으로 보이지만, 시간이 아까우니 패스. import sys N = int(sys.stdin.readline()) row = [0] * N cnt = 0 visit = [False] * N # Queen이 서로 공격할 수 없는 지 확인 def check(q): for i in range(q)..