728x90

2018/03 18

백준] 3046 - R2(COCI 2006/2007)

시간 제한 : 1초메모리 제한 : 128MB 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 이 숫자를 받아 적는다. 그리고 나서 기쁜 마음으로 1년동안 이 숫자를 외우면서 산다.상근이는 R1과 R2를 엄청난 고민 끝에 정했다. 작년에는 R1과 R2를 까먹어서 아무 숫자나 정해서 주었기 때문에, 올해는 까먹지 않기 위해서 평균 S도 같이 기억하려고 한다.오늘은 정인이 생일이다. 5분 후에 상근이는 생일 선물로 두 숫자 R1과 R2를 말해주어야 하지만, 안타깝게도 R2를 까먹고 말았다. 하지만 R1과 S는 기억하고 있다!상근이를 도와 R2가 ..

백준] 1316 - 그룹 단어 체커

시간 제한 : 2초메모리 제한 : 128MB 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력첫째 줄에 그룹 단어의 개수를 출력한다. 소스코드 #include #in..

스마트카(Smart Car) 정리

업계에서는 스마트 카, 커넥티드 카 등 다양한 용어를 사용하고 있으며, 차량에 IT기술을 접목한 것을 통칭함. 자동차업계가 CES에 참석하고 IT기업이 제네바 모터쇼에 등장하는 모습을 보게 됨. 사회/경제적으로 그 가치가 대단할 것으로 판단됨. 차세대 전기전자, 정보통신, 지능제어 기술을 접목해 내부와 외부의 정보를 실시간으으로 인식함. OBD - On Board Diagnostic자가진단 장치로, 자동차 시스템에 대해서 전반적으로 검사하여 운전자에게 통보하는 시스템. 자동차 매연 절감에 관련 장치가 고장났는지 아닌지를 자체 검사해 고장이 발생한 경우 운전자에게 경고 사항을 알리는 것도 한 예시로, 차량만이 아니라 탑승자의 생체 리듬도 센싱하는 것도 포함함. 전통적인 텔레매틱스 시스템무선통신, GPS 기..

기타/기타 2018.03.26

파이썬(Python) 간략 정리

파이썬(Python)은 귀도 반 로섬에 의해서 1991년에 나온 인터프리터 언어로, 이 역시 심심할 때 만들어져서 나온 공돌이들의 걸작 중 하나로 분류된다. 파이썬(Python)은 크게 두 버전, Python 2(2000), Python 3(2008)로 분류하며, 두 버전 간 호환되지 않는 부분이 너무 많았던 적이 있었다. 결론적으로 파이썬 2는 2.7 이후로 더 이상 발전할 일이 없고 3에 초점을 맞춰 개선되고 있기 때문에 파이썬 3에 맞춰 공부하는 것이 좋다. 파이썬은 개발자들 사이에서는 생산성과 개발 속도에서 매력이 있는 언어로, 교육 기관에서는 초보자들이 입문하기 쉬운 언어로 분류되는 추세다. 국외 대학에서는 이미 프로그래밍 입문 언어로 파이썬을 선택했고, 국내 대학도(필자가 재학 중인 학교의 학..

파일 정리 프로그램 - DirectoryCleaner Ver 1.1

DirectoryCleaner Ver 1.1 디렉토리 클리너, 폴더 클리너, 폴더 청소기, 폴더 정리 프로그램, 파일 정리 프로그램...이 프로그램을 뭐라고 설명해야 될지 나도 잘 모르겠다.그냥 정리한다기 보다는 오래된 파일을 치워버리는 청소 느낌이라서Directory Cleaner라고 했는데 더 좋은 이름이 있다면 바꿀 생각은 있지만 딱히 떠오르지 않는다. 기껏해야 Disc Cleaner 정도..? 대부분의 사람들이 파일 정리를 잘 못한다. 그냥 너저분하게 파일이 흩뿌려지기만 했다면 찾느라 애를 먹는 것에 그치겠으나, 이곳저곳 똑같은 복사본들이 있거나, 빈 파일들이 있는 경우도 있다. 아니면 존재 자체를 잊고 있는 대용량 파일들이 여기저기 흩뿌려진 경우도 있다. 필자도 나름의 정리 방법으로 정리를 하긴..

OpenCV] 이미지 반전 시키기

OpenCV에는 cvNot이라는 이미지 반전 시키는 함수가 있어서 이번에도 친구가 보내준 아이유 사진을 반전시켜봤다. 인물 사진을 반전시키는 건 확실히... 좀 그렇다. cvNot(const CvArr *src, const CvArr *dst) src는 변환하고자 하는 이미지를, dst는 변환한 이미지를 저장할 곳으로 사용한다. 유의할 점이 두 가지 정도 있다. 1. 함수에 이미지를 Mat이 아닌 IplImage로 다루어야 한다.2. dst로 받을 IplImage는 nullptr로 비워두는 것이 아니라 cvCreateImage()로 적절하게 할당해줘야 한다. 원본 결과 소스코드 #include using namespace cv; using namespace std; int main(void) { Mat ..

Library/OpenCV 2018.03.15

OpenCV] 이미지를 회색조(Grayscale)로 변환

OpenCV에서 이미지를 읽어들이고 그걸 회색조(Grayscale)로 변환시키는 소스를 쳐봤다. 앞선 포스트에서도 말했지만, OpenCV 이용은 함수를 잘 가져다 쓰면 원하는 결과를 쉽게 얻는 경우가 많다. 이 경우도 마찬가지인데, 아래 아이유의 원본 사진(Original)을 회색조(Result)로 변환시켜보는 작업을 시도해봤다. 소스코드 #include using namespace std; using namespace cv; int main() { Mat srcImage = imread("iu.jpg"); Mat destImage; cvtColor(srcImage, destImage, CV_BGR2GRAY); imwrite("grayIU.jpg", destImage); namedWindow("Origi..

Library/OpenCV 2018.03.14

백준] 1057 - 토너먼트

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 참가자의 수 N과 1 라운드에서 김지민의 번호와 임한수의 번호가 순서대로 주어진다. N은 100,000보다 작거나 같은 자연수이고, 김지민의 번호와 임한수의 번호는 N보다 작거나 같은 자연수이고, 서로 다르다. 출력첫째 줄에 김지민과 임한수가 대결하는 라운드 번호를 출력한다. 만약 서로 대결하지 않을 때는 -1을 출력한다. 소스코드 #include using namespace std; int main(void) { int n, a, b, i; cin >> n >> a >> b; a--, b--; for (i = 0; a - b != 0; i++) a /= 2, b /= 2; cout

Visual Studio에서 OpenCV 시작하기

필자는 예전부터 이미지와 영상 처리에 대해서 관심이 많았다. 영상 처리를 하기 위해서는 OpenCV가 적합하다고 판단을 했고 시간적 여유가 생기기를 기다렸다.대학교 재학 중에는 학업을 이유로 계속 미뤄오다가, 최근에서야 공부를 시작했는데 책 한 권 없이 기본도 없이 맨땅에 헤딩을 시작한 상태라 허점이 많다. 필자의 블로그에 있는 다른 글들이 질적으로 우수하다고 당당하게 이야기할 수는 없지만, 적어도 OpenCV에 관련한 글들에 비하면 낫다고 이야기할 수 있다. 이 카테고리의 글은 다른 카테고리에 비해 지식의 전달보다는 초보의 입장에서 공부한 것들을 보여주는 용도에 지나지 않을 것이다. 그렇기 때문에 전문적인 설명을 원한다면 이 페이지를 꺼도 좋다고 생각한다. OpenCV는 무엇인가?OpenCV가 무엇인지..

Library/OpenCV 2018.03.11

Algorithm] 플로이드-워셜(Floyd-Warshall) 알고리즘

모든 쌍의 최단 경로를 구하는 방법을 찾고 싶다면, 다익스트라(Dijkstra) 알고리즘을 모든 정점(Vertex)에 대한 최단경로를 구하거나 다익스트라가 제한되는 경우(음의 가중치가 존재하는 경우)에는 벨만-포드(Bellman-Ford) 알고리즘을 모든 정점(Vertex)에 대해서 사용하면 된다. 플로이드-워셜(Floyd-Warshall) 알고리즘은 앞서 말한 두 알고리즘과는 다르게 처음부터 모든 정점 사이의 최단 경로를 구하는 알고리즘이다. 위 그림은 i에서 j로 가는 방법을 표현한 것으로, k를 경유하는 경우와 그렇지 않은 경우에 대한 것이다. 위 문자의 의미는 1부터 k까지만 경유할 수 있는 상황에서 i에서 j까지 갈 수 있는 모든 경로 중, 가장 짧은 경로의 거리로, 동적계획법(Dynamic P..