전체 글 264

[python] 백준 6219 소수의 자격 *리스트 초기화*

https://www.acmicpc.net/problem/6219 문제의 출처는 위에 있다. 이 문제로 python에서 우리가 원하는 비어있는 배열과 range에 대해서 조금 알아볼 수 있다. range()의 괄호안에는 다들 알다시피 최대 3개의 파라미터를 사용할 수 있다. ([시작 인덱스],[마지막 인덱스], [증가/감소 값]) 이정도는 누구나 알 수 있다. 해답 코드를 보면 이해할 것이다. 그리고 소수를 구하기 위한 초기화된 배열이 필요할테인데 파이썬의 경우, [0] * [크기] 와 같이 나타낼 수 있다. 후의 2차원 배열 역시 '[[0]*10]*10' 와 같이 초기화 할 수 있다. 코드를 돌려보면 바로 이해할 수 있다. 1 2 3 4 5 6 7 8 9 arr = [0] * 10 print(arr) ..

python 2020.04.27

[python] 백준 4659 비밀번호 발음하기

https://www.acmicpc.net/problem/4659 문제의 출처는 위에 있다. 이 문제는 시키는대로 하면 되는 문제인데 C++이 아닌 python으로 풀면서 python 코딩에 익숙해지기 위함이다. 여기서는 'in' 문법을 사용하면 조금이나마 간결하게 풀 수 있다. 먼저 처음 푼 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 def f(a): if a == 'a' or a == 'e' or a == 'i' or a == 'o' or a == 'u': return 1 else: return 2 while True: s = input() chk,chk2 = 0,0 if s == "end": break; for i in range(len(s..

python 2020.04.27

[Networkx] 최단 경로 그리기

파이썬의 Networkx 패키지를 사용하여 다양한 그래프를 그릴수 있다. 자세한 내용은 Networkx 공식 문서를 보면 설명이 나와있다. https://networkx.github.io/documentation/stable/ Networkx로 그래프를 형성하고 matplotlib를 사용해 직접 화면으로 출력해본다. 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 import matplotlib.pyplot as plt import networkx as nx impo..

SW공부 2020.04.23

Delaunay Triangulation

한국어로 들로니 삼각분할 이라고 하며 이번에 들로니 그래프에 대해 간단하게 정리해보자. 먼저 들로니 삼각분할은 그래프가 있을때, 삼각형을 만드는데 각각의 삼각형들은 본인들 세 점을 제외한 다른 점을 포함하지 않게끔 삼각형을 만들어 분할하는 것을 의미한다. 이것을 가지고 어떤 특정 점에서 가장 가까운 거리에 있는 위치를 찾을 수 있다. 이걸 응용하여 들로니 그래프가 있을때, cycle을 이루는 정점들의 집합을 바탕으로 모든 정점들이 가중치 w이하에서 모든 정점을 커버하는지 확인해 볼것이다. 즉, 모든 정점에서 cycle을 이루는 정점으로 가중치 w이하의 값으로 연결되는지 확인하는 과정이다. 먼저 들로니 그래프를 구현하는 python 코드이다. 본 글의 목적은 들로니 그래프가 구현되어 있을때, 모든 정점이 ..

SW공부 2020.04.23

[Spring] Maven 설치와 STS 프로젝트 구조

Maven 설치 maven.apache.org 에서 다운로드 받을 수 있다. 해당 zip파일의 압축을 풀고 원하는 경로에 지정한다. 지정한 후, 환경 변수를 설정해야 한다. 시스템 변수에 MAVEN_HOME 이름으로 지정한 경로를 복사 붙여넣기하고 시스템 변수의 path설정에 %MAVEN_HOME%\bin 으로 해당 경로를 추가한다. 테스트는 명령 프롬프트 창에 'mvn' 을 입력했을때, 이렇게 나오면 성공인 것이다. STS설치는 이전 글을 참고하길 바란다. 메이븐은 프로젝트 구조와 내용을 기술하는 선언적 접근 방싣의 오픈 소스 빌트 툴이다. 이것을 사용하며 ㄴ프로젝트 종속 라이브러리들과 그 라이브러리에 의존하는 Dependency 자원까지 관리할 수 있다. 메이븐은 프로젝트 전반의 리소스 관리와 설정 ..

[Spring] 관점 지향 프로그래밍_ AOP

AOP 메서드 안의 주기능과 보조 기능을 분리한 후 선택적으로 메서드에 적용해서 사용하는 개념이다. 전체 코드에 흩어져 있는 보조 기능을 하나의 장소에 모아 관리할 수 있다. 또한 보조 기능을 자신이 원하는 주기능에 선택적으로 적용할 수 있으므로 코드가 단순해지고 가독성이 향상된다. 예를 들면 아래와 같다. 각각의 보조 기능을 미리 만들어 놓고 설정만 하여 각각의 주기능을 수행하는 메서드나 클래스에 선택적으로 보조 기능이 적용된다. 이제 간단하게 스프링 API를 이용하여 AOP를 구현해보자. 그 과정은 좀 복잡하다. 타깃(target) 클래스를 지정하고, Advice 클래스를 지정하고, 설정 파일에서 pointcut을 지정한다. 설정 파일에서 Advice와 Pointcut을 결합하는 Adviser를 설정..

[Spring] Spring framework_ 설치 및 개요_ 의존성주입(DI)

Spring Framework 스프링 프레임워크는 '자바 웹 어플리케이션' 개발을 위한 오픈 소스 프레임워크이다. 경량 프레임워크라고도 불린다. 이 스프링도 사용되는 여러 비어있는 클래스 객체를 스프링이 권한을 가지고 작업하며 아래의 특징을 가진다. 의존성 주입: 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용 제어 역행(IoC): 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행 관점 지향: 핵심 기능 외 부수기능들을 분리 구현하여 모듈성을 증가시킴 위와 같은 특징이 있고 주요기능들로 MVC구현, DAO로 Context, Core 등의 기능들이 있다. 그럼 이전까지 작업했던 이클립스가 있는데 Spring Framework를 설피해보자. 최근에는 이클립스..

[Colab] GAN(Generative Adversarial Networks)

GAN Generative Adversarial Networks(GAN)은 적대적 학습(Adversarial Networks) 구조를 이용해서 생성 모델을 학습하는 아키텍쳐이다. GAN은 Discriminator(구분자)와 Generator(생성자)로 구성되어있다. 이는 경찰과 위조지폐생성범의 관계로 비유를 많이 하는데, 경찰은 계속해서 진실을 찾기위해 노력하고 범인은 경찰에게 걸리지 않기 위해 계속해서 노력한다. 구분자(경찰)는 어떤 이미지가 진짜 이미지인지 아니면 생성자(지폐위조범)가 만들어낸 가짜 이미지인지를 구분하도록 학습한다. 생성자는 Latent Variable(Noise Distribution에서 추출한 값)로부터 생성한 이미지가 구분자를 잘 속일 수 있도록 학습한다. 결과적으로 생성자는 원..

[Colab]Canny Edge Detector_hough transform_Edge 탐색 코드

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 import cv2 import numpy as np from google.colab.patches import cv2_imshow from google.colab import drive import sys #colab에서 cv2 이미지를 위한 라인 drive.mount('/content/gdrive') sys.path.insert(0, '/content/gdr..

[Colab] Histogram 코드

Histogram 이미지 처리 컨텍스트에서, 이미지의 히스토그램은 일반적으로 '픽셀 강도 값'의 히스토그램을 지칭한다 . 이 히스토그램은 이미지에서 발견 된 각각의 다른 강도 값에서 이미지 의 픽셀 수를 나타내는 그래프이다. 8 비트 grayscale의 경우 256 가지의 다른 가능한 강도가 있으므로 히스토그램은 그레이 스케일 값 사이의 픽셀 분포를 나타내는 256 개의 숫자를 그래픽으로 표시한다. 히스토그램은 컬러 이미지로도 촬영할 수 있다 .- 빨간색, 녹색 및 파란색 채널의 개별 히스토그램을 촬영하거나 3D 히스토그램을 생성 할 수 있습니다. 세 개의 축은 빨간색, 파란색, 녹색을 나타냅니다.채널 수, 픽셀 수를 나타내는 각 지점의 밝기. 연산의 정확한 결과는 구현에 따라 다르며, 적절한 이미지 형..