본문 바로가기

IT/programming42

[C++] 프로그래머스, 더 맵게 더 맵게 코딩테스트 연습 > 힙(Heap) > 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 so.. 2022. 2. 16.
[C++] 프로그래머스, 전화번호 목록 전화번호 목록 코딩테스트 연습 > 해시 > 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은.. 2022. 2. 16.
[PYTHON] 유효한 날짜 포맷 확인 / 정규식, re 유효한 날짜 포맷 확인 이전에 다뤘던 날짜 포맷 유효성 검사를 정규식으로 다시 표현해봤다. https://muabow.tistory.com/326 [PYTHON] 유효한 날짜 포맷 확인 / datetime 유효한 날짜 포맷 확인 특정 패턴을 갖는 날짜 포맷을 확인하는 소스코드이다. 개인적으로는 별도의 모듈을 사용한, 그것도 try-except를 사용한 구조를 무척 좋아하지 않기 때문에 사용하던 프 muabow.tistory.com 소스코드 정말 간단한 정규식을 이용하여 패턴화 시켰다. 날짜 포맷은 여러 가지를 사용할 수 있지만 API의 정적인 format을 해치지 말아야 하기 때문에 다른 format 은 배제한다. 정규식에서 d는 digit를 의미하며 소문자는 string을 사용하지 않는 only dig.. 2022. 1. 28.
[PYTHON] nested JSON 변환 / comparing two nested JSON nested JSON 변환 예제 1. 재귀를 이용해 nested 구조의 key들을 flat 하게 만들어서 dictionary에 key/value 로 저장을 하는 예제이다. 소스코드 """ # JSON data format { "Key_A": "A", "Key_B": { "B_1": "1", "B_2": "2" }, "Key_C": "C" } """ import json json_data = json.loads('{ "Key_A": "A", "Key_B": { "B_1": "1", "B_2": "2" }, "Key_C": "C" }') def parse_nested_json(_json, _path, _parent = "") : for key in _json : if type(_json[key]) == di.. 2022. 1. 27.
[PYTHON] 유효한 날짜 포맷 확인 / datetime 유효한 날짜 포맷 확인 특정 패턴을 갖는 날짜 포맷을 확인하는 소스코드이다. 개인적으로는 별도의 모듈을 사용한, 그것도 try-except를 사용한 구조를 무척 좋아하지 않기 때문에 사용하던 프로그램에서 걷어 낼라고 정리한다. (나중에 까먹을까봐) 소스코드 import datetime def is_valid_datetime(_date) : regex = datetime.datetime.strptime try : regex(_date, '%Y-%m-%d %H:%M:%S') except ValueError: return False return True print(is_valid_datetime("2022-01-27 16:24:00")) print(is_valid_datetime("01-27-2022 16:2.. 2022. 1. 27.
[C/C++] C언어 파일 생성/삭제 이벤트 모니터링 / inotify, event monitoring C언어 파일 생성/삭제 이벤트 확인 inotify - monitoring filesystem events, inotify 를 이용하여 파일시스템 이벤트를 모니터링하는 프로그램을 만들어보자. 응용 또는 질문은 댓글에 남겨주면 성실하게 답장해주겠다. 이번에도 늘 그렇듯 완성된 동작의 소스코드를 동작한다. 이번 소스코드에서는 생성(IN_CREATE)와 삭제(IN_DELETE)만 사용하였지만 더 많은 event trigger가 존재한다. inotify의 man page 일부 발췌 IN_ACCESS (+) File was accessed (e.g., read(2), execve(2)). IN_ATTRIB (*) Metadata changed—for example, permissions (e.g., chmod(2).. 2022. 1. 20.
[C/C++] C언어 mmap, msync, munmap 설명 mmap, msync, munmap 1.1. 사용법 #include void * mmap(void *start, size_t length, int prot, int flags, int flides, off_t offset); 1.2. 설명 mmap() 함수는 flides로 지정된 파일(혹은 다른 객체)에서 offset을 시작으로 length바이트 만큼을 start주소로 대응시키도록 한다. start주소는 단지 그 주소를 사용했으면 좋겠다는 정도로 보통 0을 지정한다. mmap는 지정된 영역이 대응된 실제 시작위치를 반환한다. prot인자는 원하는 메모리 보호모드를 설정한다. 사용할 수 있는 비트는 다음과 같다. PROT_EXEC 페이지는 실행 가능하다. PROT_READ 페이지는 읽을 수 있다. PROT.. 2022. 1. 19.
[C/C++] C언어 프로그램/함수 실행 시간 측정, us 마이크로초 기준 C언어 프로그램/함수 실행 시간 측정 C언어에서 사용할 수 있는 프로그램/함수 실행 간 시간 측정 방법을 공유한다. timeval 구조체를 이용하여 작성하였고 마이크로초(us) 단위로 측정하였다. 단위의 변환이 필요하다면 코드를 고쳐서 사용하도록 하자. 소스코드 - sleep 하여 1000000 us(1초)에 근사한 측정치를 보여주는지 확인하자. #include #include #include double calc_diff_time(struct timeval _x, struct timeval _y) { double x_us, y_us, diff; x_us = (double)_x.tv_sec * 1000000 + (double)_x.tv_usec; y_us = (double)_y.tv_sec * 10000.. 2022. 1. 18.