본문 바로가기

TIL10

[C++] pow함수 double 형의 정확성 문제 https://www.acmicpc.net/problem/1740 1740번: 거듭제곱 3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를 www.acmicpc.net 해당 문제를 풀다가 발견한 문제.. 분명 로직은 맞는데 어디서 틀린건지? 으잉? 분명 (맨앞) 1비트씩 차이나는데 왜 pow로 곱한 값은 같은 거지????? 문제를 발견하고 뒤적이기 시작했다. 아..하.. 실수 연산의 차이... 부동소수점.... 2023. 4. 30.
C++ string replace, count 맨날 까먹어서 글 쓴다. string 메서드 replace(치환할 시작 위치, 치환할만큼 길이, 치환할 문자열) string target="Hello World!"; string change="Bye"; target.replace(0, 5, change); 프로그래머스에서 풀다가 테스트함... 내장함수 count(문자열 시작 위치, 문자열 끝나는 위치, 찾을 char) #include string str="10001100001"; count(str.begin(), str.end(), '1'); // 4 2023. 4. 10.
IntelliJ 사용 시 gradle 프로젝트 out, build 폴더 차이 IntelliJ 사용 시 build 하면 out 폴더와 build 폴더가 생성 *될 수도* 있다. 두 개의 폴더는 동일한 클래스 파일을 소유하고 있다. 무슨 차이가 있을까? out - 폴더는 인텔리제이 빌드시에 컴파일한 class를 저장하는 폴더 build - 폴더는 gradle 빌드시에 컴파일한 class를 저장하는 폴더 예전에 AsciiDoc을 이용해 REST Doc을 만드는 작업을 했는데 프로젝트를 진행할 때 이상한 점이 있었다. 아스키독 테스트 코드를 구현하고 빌드를 했는데 예상대로라면 build폴더 하위에 *.ascii 파일이 생성되어야 했는데 build 폴더가 없는 것이다. 이제 그 이유를 알았다... IntelliJ에는 IDE 자체에서 빌드하는 기능을 제공한다. 평상적으로 IntelliJ 자.. 2023. 4. 5.
[C++] vector.size()는 unsigned 이다. vector v의 사이즈가 4이고 k가 10일 때 (v.size() - k > 0) 조건이 계속 참이 나왔다. 왜 그러나 (v.size() - k) 를 콘솔에 찍어보니 쓰레기 값이 나왔다..... 쓰레기 값을 30초 들여다보니 아차 싶더라. v.size() 는 양수만 취급한다.size가 음수일리는 없으니 signed 자료형으로 개발했나보다. C만든 사람들 꽤나 직관적이다. unsigned : 양수만 표현 가능 (0 ~ 2^32-1) signed : 맨 앞 비트로 양수/음수를 분별한다. (-2^31 ~ 2^31-1) signed int가 기본형이라 너무 당연하게 v.size()가 음수 표현이 안 될 것이란 생각을 못했다. 바보.......... 2023. 3. 24.
221229 오늘의 삽질 #include using namespace std; int main() { string str ="aabbbcccddd"; str.substr(1,3); // abb } 위와 같이 c++에서 string 자료형을 substr 할 수 있다는 것을 익히 알고 있을 것이다. 매개변수가 Python의 slicing처럼 [시작 인덱스 : 마지막 인덱스) 인 줄 알았다. basic_string substr( const size_type _Off = 0, const size_type _Count = npos) const { // return [_Off, _Off + _Count) as new string return basic_string(*this, _Off, _Count, get_allocator()); } s.. 2022. 12. 29.
[C++] 우선순위 큐 오름차순(최소힙) 만들기 1. 기본 자료형 일 때 priority_queue q; 2. pair 자료형 일 때 priority_queue q; 2022. 12. 4.
[C++] string 문자열 split 하는 함수 stringstream 헤더파일을 사용해 직접 구현해야 한다. python은 기본 제공하는데 c++은 그저 똥... #include #include #include using namespace std; vector split(string str, char delimiter); int main(){ string test = "min sung kang"; vector result = split(test, ' '); for (int i=0;i 2022. 12. 2.
221112 오늘의 삽질 Immutable Collections는 Collections.sort() 적용이 안 된다. ^^! 한 번 생각하면 당연한 것이다. ImmutableCollections를 정렬한 Collections을 복사해서 사용하자. List sorted = numbers.stream().sorted().collect(Collectors.toList()); // mutable immutable 2022. 11. 12.