전체 글 212

[BOJ] 13136 - Do Not Touch Anything 풀이

1. 문제 문제 ACM-ICPC 대회의 대회장은 R행 C열의 직사각형 형태로 좌석이 배치되어 있다. 대회가 시작하기 전에는 참가자들이 아무것도 만지면 안 되기 때문에 진행자는 'Do not touch ANYTHING!!!'을 연신 외친다. 하지만, 진행자가 성대결절에 걸리면서 'Do not touch ANYTHING!!!'을 외칠 수 없는 처지가 되었다. 따라서 주최측은 CCTV를 설치하여 참가자들을 감시하려고 한다. 이때, 각 CCTV는 N행 N열의 직사각형 영역의 좌석을 촬영할 수 있다. 모든 좌석을 전부 촬영하도록 CCTV를 배치할 때, 최소 몇 개의 CCTV가 필요할까? 입력 첫 번째 줄에 좌석의 세로 크기, 가로 크기 R, C와 한 대의 CCTV가 수용할 수 있는 범위 N이 주어진다. (1 ≤ ..

[리뷰] 샤오미 Wiha 정밀 드라이버 개봉기

내 오래된 맥북 2013 late 13인치 모델을 분해하기 위해여, 5각 별나사 드라이버가 필요했다. 검색을 해보니 맥북 분해에 필요한 드라이버 5종을 묶어 8,800원에 팔기도 하던데, 차라리 나중을 위해서 여러개의 비트를 제공하는 드라이버를 구매하기로 결정 그 중에서 샤오미 제품을 구매했다. 가격은 2만원 초반이며 택배비를 포함하니 2만 5천원 내외였던것 같다. 구매를 어제 오후 5시쯤에 했던것 같은데, 다음날인 오늘 도착했다. 빠른 배송은 역시 사랑 제품 외관 포장은 정말 깔끔하게 되어있다. 전면에는 제품 사진과 이름 그리고 레드닷 디자인 어워드 로고가 새겨져있다. 제품 뒷면에는 눈으로 확인하기 쉽도록 비트의 종류를 써놓았고, 모델명과 색상등의 제품 정보가 적힌 스티커가 부착되어있다. 샤오미 Wih..

일상/리뷰 2019.04.04

[BOJ] 3460 - 이진수 풀이

1. 문제 문제 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. (1 ≤ T ≤ 10, 1 ≤ n ≤ 10 6 ) 출력 각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서 출력한다. 위치가 낮은 것부터 출력한다. 예제 입력 복사 1 13 예제 출력 복사 0 2 3 힌트 [출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음] 2. 해답 이 문제는 정수를 어떻게 이진수로 표현하고 있는지, 그리고 비트와이즈 ..

[BOJ] 3495 - 아스키 도형 풀이

1. 문제 문제 창영이는 메모장에 '.', '\', '/'을 이용해서 도형을 그렸다. 각 문자는 그림에서 1*1크기의 단위 정사각형을 나타낸다. '.'은 빈 칸을 나타내며, '/'는 정사각형의 왼쪽 아래 꼭지점과 오른쪽 위 꼭지점이 연결된 선분을, '\'은 왼쪽 위 꼭지점과 오른쪽 아래 꼭지점이 연결된 선분을 나타낸다. 창영이가 그린 도형의 넓이를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 h와 w가 주어진다. h는 그림의 높이, w는 너비이다. (2 ≤ h,w ≤ 100) 다음 h개 줄에는 창영이가 메모장에 그린 다각형이 주어진다. 창영이가 그린 다각형은 1개이고, 변과 변이 서로 교차하는 경우는 없고, 자기 자신과 접하는 경우도 없다. 출력 첫째 줄에 다각형의 넓이를 출력한다. 예제 입력 복사 ..

[JS] HTML에서 JS를 이용하여 IP 주소 얻기

1. HTML에서 Javascript만으로 IP 주소 얻기 HTML에서 IP주소를 확인하기 위한 방법으로 대부분 사람들이 Java script를 이용하려고 한다. 단도직입적으로 HTML내에서 Javascript만으로 IP 주소를 얻을 수 없다. 2. IP address를 구하는 방법 서버는 사용자의 요청(Request)을 받을 때 TCP 또는 UDP 헤더를 보고 IP 주소를 알 수 있다. 즉, IP 주소를 얻기 위해서는 서버단에서 처리를하여 값을 되돌려 주어야 한다. 따라서 할 수 있는 방법으로 1. 서버를 구현한다. 2. API를 사용한다. 두개로 좁힐 수 있다. (1) 서버를 구현하는 방법 많은 사람들이 사용하는 Node.js나 php를 이용한다면, 많은 소스코드가 인터넷 상에 존재한다. 애초에 이런..

[JS] IP를 이용한 Geolocation 정보 얻기 (위도, 경도)

IP 주소를 이용하여, Geolocation 정보를 얻을 수 있다. 여기서 Geolocation은 위도와 경도 (Latitude, Longitude)를 뜻한다. 여기서 얻어지는 위도와 경도값은 굉장히 부정확하다. 그 이유는 ISP(인터넷 공급자)가 제공한 데이터를 이용하기 때문이다. 따라서 현재 위치는 서울이지만 조회 결과가 경기도로 나타날 수도 있다. 이 1. IP 주소 얻기 현재 자신의 위치 정보를 얻는 방법은 [JS] HTML에서 JS를 이용하여 IP 주소 얻기를 참조하자. 2. Geolocation API 설명 여기서 사용할 API는 ip-api.com가 제공한다. 이 사이트는 별도의 회원가입이나, 키발급 없이 바로 조회를 할 수 있다. 다만 분당 150회의 제한이 있으니 확인하기 바란다. 또한 ..

[라즈베리파이 / 리눅스] init.d 서비스 스크립트 작성을 통한 시작 프로그램 만들기

리눅스, 특히 라즈베리파이를 이용한 프로젝트를 진행하고 있다면 아두이노와 같이 재부팅(전원 인가)시에 작성한 프로그램이 자동으로 켜지도록 만들어야 한다. 이러한 시작 서비스를 만드는 방법은 구글에 linux start up program 또는 boot up program의 키워드로 검색하면 다양한 정보를 얻을 수 있다. 가장 간단한 방법은 rc.local이나 crontab에 커맨드를 등록하여 바로 실행하는 방법이 있고, 더 나아가 systemmd를 이용하는 방법도 있다. 어느 사이트에서는 5가지 방법에 대하여 다루고 있다. 이번 포스트에서는 그중 가장 널리 사용되는 init.d 서비스 스크립트를 작성하는 방법을 다룬다. init.d는 리눅스를 어느정도 만져본 대부분의 사람들은 특정 서비스를 start /..

[라즈베리파이/리눅스/우분투] RS232/RS485 to USB 장치 포트(ttyUSB) 검색 방법 및 코드

라즈베리파이(raspberry pi)에서 serial to ttl usb 컨버터 장치를 통해 통신을 하기 위해서는 장치명이 아닌 포트위치가 필요하다. 포트 위치는 /dev/ttyUSB1과 같이 디렉터리이며, 여기서 USB0, USB1...의 장치는 연결되는 USB 장치의 개수에 따라 달라진다. 물론 이 포트 위치는 제조사와 장치 명칭을 통해서 고정하여 쓸 수 있다. 하지만 장치는 언제나 동일 기능을 수행하는 다른 장치로 변경할 수 있으므로 나는 Device ID를 이용해서 해당 장치의 포트를 알아내는 방식을 선택했다. 우선 크게 동작하는 방법을 알아보면, 1) Device 입력 및 해당 device가 존재하는지 확인 configuration파일을 통해서 장치ID를 입력 받을 것이므로, 입력받은 ID 값이..

[Python] Modbus CRC16 파이썬3 예제 코드

C언어로 구현되어 있는 Modbus CRC16 코드는 아래의 링크를 참고하면 된다. http://www.modbustools.com/modbus_crc16.htm 이 코드를 파이썬으로 포팅해야하는 이유가 생겨서 CRC16을 파이썬3에서 구할 수 있도록 코딩하였다. 상세한 내용은 코드를 참고하길 바란다. # This code is ported from modbus CRC16(https://www.modbustools.com/modbus_crc16.htm) crcTable=[0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,0x0D80..

[맥북] Mac OS 단축키 모음

다시금 맥북을 쓰기 시작하여, 단축키를 외우고자 포스트를 작성한다. 1) 일반적인 단축키 종류 Mac OS 윈도우즈 한영전환 ctrl+space 한영키 창 닫기 cmd + w alt + f4 프로그램 종료 cmd + q alt + f4 모든 창 닫기 cmd + opt + w win키 + D 삭제 cmd + del del 시스템 종료 cmd + opt + esc ctrl + alt + del 새로고침 cmd + r ctrl + r 복사 cmd + c ctrl + c 잘라내기 cmd + x ctrl + x 붙여넣기 cmd + v ctrl + v 실행 취소 cmd + z ctrl + z 모두 선택 cmd + a ctrl + a 2) 유용한 기능 종류 Mac OS 윈도우즈 마지막으로 닫은 탭 열기 shift +..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사