반응형

Python3 47

[프로그래머스][최소직사각형] - 그리디 문제

안녕하세요 Dibrary 입니다. 이번에는 과거에 풀지 못했던 문제를 다시 도전했는데, 생각외로? 쉽게 풀려서 당황했는데, 왜 그런 느낌을 받았는지를 정리해보고자 합니다. 문제는 '최소 직사각형'이라는 문제인데, 처음에 맞이했을 때의 그 느낌을 아직도 잊을 수 없습니다. (알고리즘을 아예 풀지 못하면서 BOJ에서 A+B 이런거만 건드릴 때 였죠...) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 지금에 와서야 이 문제가 '그리디'고, 문제에 '숨은' 조건을 찾는 것이 중요하다는 것을 알지만, 처음에는 아예 몰랐습니다. 처음에 이 문제를 맞닥뜨리고 느낀 ..

파이썬으로 구현해 확인하는 MODBUS통신 - Client 편

안녕하세요 Dibrary입니다. 파이썬으로 온갖걸 다 할 수 있다는건 많이들 알고 계실겁니다. 그 중에 Plant 산업 현장에 많이 쓰이는 Modbus도 파이썬으로 가능한거 알고 계세요? 만능이죠 만능. 간단하게 Modbus 통신을 이용해서 Client로 값을 쓰고 읽는 것을 해 보겠습니다. 저는 Jupyter를 사용해서 결과를 보여드릴거고, Device는 modSim이라는 시뮬레이터로 확인해 보았습니다. (물론, 실제 PLC, MCU보드, 인버터 등등을 제어하는 것도 했습니다.) 시뮬레이터는 아래에서 받으실 수 있습니다. Modbus simulator Download Modbus simulator for free. Modbus RTU and TCP/IP slave simulator. For Testin..

[BOJ][2343번] 기타 레슨

안녕하세요 Dibrary입니다. 이번에는 이진탐색을 사용해서 풀어야 하는 문제를 정리해보겠습니다. 처음에 나름 알머리 굴리다가 시간초과로 실패를 겪은 문제입니다. 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 문제를 처음 보자마자 떠오른 생각은 아래와 같습니다. M만큼만 자르면 된다. (이걸 반복문에서 캐치해야 할 것 같다.) M만큼 자르는 M-1 포인터를 for문으로 돌리면 어떨까. 근데 2번에서 생각해보니 거의 100000! 번에 가까운 연산이 이뤄질 수도 있다는 생각이 들어서 위 방법은 곧바로 포기 했습니다...

REST 테스트를 하기 위한 json-server 실행하기

안녕하세요 Dibrary입니다. RESTful API를 테스트 할 때, json 꼴로 반환해 주는 서버가 있으면 편리한데 대부분 아래 사이트를 많이 사용하곤 합니다. JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2021, serving ~1.7 billion requests each month. jsonplaceholder.typicode.com 이 사이트도 편리하지만, 데이터 넣고, 수정 작업을 하려면 직접 서버를 하나 돌리고 해당 서버를 이용해서 테스트 하는 것이 더 ..

[BOJ][1931번] 회의실 배정

안녕하세요 Dibrary입니다. 이번에는 굉장히 유명한 '회의실 배정'문제를 정리해보겠습니다. 사실, 이 문제는 여러 알고리즘 책에 소개가 되었으나 막상 안보고 하려니 잠시 헷갈린 문제입니다. 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 먼저 예제 입력에 대해서 확인을 해보겠습니다. 총 11개의 가능한 시간이 주어지는데, 이를 엑셀로 표현해보면, 이렇게 나옵니다. 이 중에 예제 출력의 결과인 4가 나오게 하려면, 이렇게 골라야 합니다. 근데, 이때 제가 의문이 들었던 내용은, 첫 번째로 택해진 1, 4에 해당되는 시간 구간은 맨 처음에 시작하는 것도 아니고, 그렇다고 길이가 가장 긴 것도 아니고, 아무것도 아닌데, 그럼 ..

[BOJ][6198번] 옥상정원 꾸미기

안녕하세요 Dibrary입니다. 이번 문제는 '스택'을 활용한 문제입니다. 스택을 배우긴 했는데, 어떻게 써야할 지 모르는 사람이었다면 이 문제를 풀지 못했을 겁니다. (저처럼요...) 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 먼저 예시로 나온 문제를 보면 10, 3, 7, 4, 12, 2 에서, 10을 기준으로는 3개, 7은 1개, 12는 1개 총 5개를 볼 수 있죠. 그래서 전 처음에 이런 방식으로 도전했었습니다. 모든 타워 정보를 넣은 후에, for문을 2겹으로 돌면서 기준 타워보다 그 다..

파이썬으로 XML파일 파싱해서 사용하기

안녕하세요 Dibrary입니다. 이번에는 파이썬으로 XML파일을 파싱해보겠습니다. XML파일은 JSON파일과 마찬가지로 설정하는 부분에서 굉장히 많이 쓰이고, 또 각종 산업 현장에서 태그들을 XML파일로 정의해서 쓰거나, 로그를 XML꼴로 저장하기도 합니다. 이럴 경우 airflow를 사용해서 해당 파일을 파싱하게 해서 정리하면 꽤 유용합니다. 파이썬은 Jupyter를 사용하고, XML파일은 임의로 아래와 같은 파일을 만들었습니다. (실제 플랜트 산업에서 쓰는 것과 같진 않지만, 유사하게 말이죠) 참고로 저는 파일 이름을 sample.xml 이라고 지었습니다. xml을 파싱하려면 lxml 모듈이 있어야 합니다. 늘 그렇듯, pip install lxml을 하시면 자동으로 설치가 됩니다. 먼저 root의 ..

파이썬으로 임의 데이터 생성, 데이터파일 만들기

안녕하세요 Dibrary입니다. 데이터 분석이나, 데이터 엔지니어링을 할 때 생각보다 많은 양의 데이터가 필요한데 구하기가 마땅치 않을 때가 많죠. 이럴 때 파이썬을 이용해서 임의 데이터 파일을 만들어서 '동작여부, 기능 상태 확인'등을 진행해볼 수는 있습니다. 데이터를 임의로 생성할 때 필요한 것은 faker 모듈입니다. tmp라는 Faker 객체를 만든 후에, name을 불러보니 제가 입력한 적도 없는 데이터가 마치 '이름'처럼 나왔죠? 그럼 이 Faker 객체로 어떤 것들을 만들 수 있는지는 dir(tmp) 를 해 보시면 알 수 있습니다. 아주 많은 것을 만들 수 있죠. 그럼, 이제 임의로 제가 csv 파일 꼴의 데이터를 생성해 보겠습니다. 날짜, 시간, 이름, 지역 이렇게 구성된 데이터를 한 번 ..

파이썬으로 JSON 파일에서 필요한 것만 뽑아내기

안녕하세요 Dibrary입니다. 이번엔 JSON파일을 파이썬으로 파싱해보겠습니다. JSON은 ElasticSearch를 사용하면 정말정말 자주 보게 될 텐데요, 처음 접한 경우에는 좀 어색할 수 있습니다. 먼저 임시 JSON 파일을 만들어보겠습니다. 대충 코드가 비슷하게 들어가 있죠? 이 파일을 저는 Jupyter를 이용해서 확인해 보겠습니다. 항상 import json을 해 주셔야 합니다. 그리고 가장 위에 있는 'users'에 속한 내용들을 가져와봤습니다. 위에 있는 내용을 통으로 다 가져온걸 볼 수 있습니다. 참고로 해당 데이터는 'list' 타입입니다. 그래서 하나씩 확인 해 보니 인덱싱이 가능한걸 볼 수 있습니다. 좀 더 편하게 for문으로 확인해 보면 아래와 같습니다. 자 그럼 해당 데이터 중..

[디자인 패턴] 싱글톤

안녕하세요 Dibrary입니다. 디자인패턴이 몇 개 있는데, 그 중에 싱글톤을 정리해두고자 합니다. 싱글톤은 아래와 같이 설명할 수 있습니다. 여러 사람이 접근 하더라도 해당 객체는 반드시 같은 객체여야 한다. 이러한 경우에 싱글톤 패턴을 적용할 수 있다. 여러 사람이 접근하더라도 해당 객체는 반드시 같아야 한다는게 무슨 의미일까요? 즉, '하나의 객체(인스턴스)'만 생성이 되고 이걸 여러 사람이 '돌려쓴다'는 개념입니다. 대표적으로 DB접속할 때 쓸 수 있습니다. Jupyter를 이용해서 코드를 확인해보겠습니다. Singleton이라는 클래스에 __new__ 메서드와, __init__메서드가 있습니다. __init__은 많이들 생성자로 알고 계실텐데요, 위 코드를 보면 __new__가 먼저 실행되었음을..

반응형