본문 바로가기

IT/programming36

[C/C++] C++ string ltrim, rtrim, trim ltrim, rtrim, trim C++11 환경에서 작업을 하는데 trim 기능이 없어서.. :( 직접 만들기는 귀찮고 찾다보니 스택오버플로우 댓글 중에 깔끔하게 구현한 코드가 있어서 기록용으로 정리해본다. 소스코드 #include #include #include string ltrim(string _s) { _s.erase(_s.begin(), find_if(_s.begin(), _s.end(), not1(ptr_fun(isspace)))); return _s; } string rtrim(string _s) { _s.erase(find_if(_s.rbegin(), _s.rend(), not1(ptr_fun(isspace))).base(), _s.end()); return _s; } string tri.. 2022. 3. 23.
[PHP] 변수명으로 함수 호출 / function_exists() 변수명으로 함수 호출 PHP 개발을 하다보면 함수명을 동적으로 호출해야할 때가 있는다. 생각보다 간단하므로 아래 소스코드를 참고 하면된다. 소스코드 - test(), test2() 두개의 함수를 생성하고 변수에 함수명을 입력한다. 1. function_exists() 를 이용하여 해당 문자열과 동일한 함수가 있는지 확인한다. 2. 해당 문자열과 동일한 함수가 존재한다면 변수에 () 기호를 붙여 함수를 호출하여 동작하는지 확인한다. 3. 해당 문자열과 동일한 함수가 없다면 예외 처리를 한다. 결과 test test2 test3 - function not found 변수와 동일한 함수가 실행되는 것을 확인할 수 있다. 즉 함수 call point 를 꼭 fixed하지 않고 상황에 따라서 가변적으로 함수를 c.. 2022. 3. 4.
[PHP] URI '/'(slash) 중복 처리 / preg_replace, 정규식 URI '/'(slash) 중복 처리 URI를 처리하다보면 또는 문자열 처리를 하다보면 '/' (slash)를 사용자(또는 동료 개발자)가 중복으로 입력하는 경우가 종종 생긴다. 실수 또는 string merge 등등의 경우에 경로 끝에 / 처리하고 붙이는 string 선두에 / 이 있다던지.. 어쨌든 중복된 / 를 정규식을 이용하여 없애려고 한다. 소스코드 결과 string(23) "//api////device//status" string(18) "/api/device/status" 정규패턴에서 나타내는 #//+# 은 # : escape character 를 있는 그대로 사용한다 라는 의미. /를 \/ 이렇게 표현하지 않아도 되도록.. + : multiple 이란 의미, {//, }과 같고 //, //.. 2022. 3. 4.
[PHP] nested JSON key 추출 / 재귀함수 활용, recursive call nested JSON 변환 PHP에서 재귀 함수를 이용해 nested 구조의 key들을 /로 구분 짓는 URI string으로 변환하는 예제이다. 이 또한 Restful API 구현에 필요한 기능의 일부이니 활용 가능한 환경이라면 도움이 되길 바란다. 이전에 python 으로 작성한 변환 방식과 유사하니 참고. https://muabow.tistory.com/327 [PYTHON] nested JSON 변환 / comparing two nested JSON nested JSON 변환 예제 1. 재귀를 이용해 nested 구조의 key들을 flat 하게 만들어서 dictionary에 key/value 로 저장을 하는 예제이다. 소스코드 """ # JSON data format { "Key_A": "A", .. 2022. 3. 3.
[C++] 프로그래머스, 베스트앨범 타이틀 코딩테스트 연습 > 해시 > 베스트앨범 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한 사항 genres[i]는 고유번호가 i인 노래의 장르입니다. play.. 2022. 2. 23.
[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.