C++ 10

[프로그래머스 Lv.3] 정수 삼각형

Solution ) 밑으로 내려갈 수록 쌓여 내려간다. DFS 로 풀 수도 있겠지만, 경우의 수가 너무 많아지므로 효율이 떨어진다. DP 방식, 즉 기억해서 써먹기 알고리즘으로 가야한다. 쉽게 접근하고자 삼각형을 배열(표) 형식으로 바꿔본다. 7 0 0 0 0 3 8 0 0 0 8 1 0 0 0 2 7 4 4 0 4 5 2 6 5 (Triangle 이중 배열) * 빈칸으로 보일 수 있는 부분은 계산식 수립이 용이하도록 0을 채워넣었다. 삼각형을 배열(표)로 만든 것과 동일하게, SumList 라는 이중 배열을 하나 더 만들어주었다. 이 이중 배열의 용도는 해당 칸까지 내려간 수의 Sum, 총 합 값을 기억하기 위해서다. 7 0 0 0 0 10 15 0 0 0 18 16 15 0 0 20 25 20 19 ..

[프로그래머스 Lv.3] 베스트앨범

Solution ) (1) Map 자료형에 장르별 총 플레이수를 저장 (2) Map을 돌면서 총 플레이 수가 가장 높은 장르를 추출 (3) 해당 장르의 인덱스로, plays 배열에 접근해서 플레이 수가 높은 두 음악을 골라냄 (4) 이때, 주의해야할 점은 동일한 플레이 수의 경우 인덱스 숫자가 작은 것이 우선이다. 나같은 경우는 작은 인덱스 순으로 접근했기 때문에 플레이 수가 동일하다고 해서 덮어씌워지는 경우는 없었음. (5) 두 곡을 뽑아낸 장르는 목록에서 삭제 후, 더 이상 찾을 장르가 없을 때까지 재귀형식으로 2-5를 반복

[C++] 둘이 뭐가 다른데? Enum vs Enum class

사실 내가 Enum class 를 쓰게된지는 얼마 되지 않았다. Enum 을 쓰던 버릇이 남아있었기 때문이었다.그러나 실제 업무를 하다보니 다른 실무자분들은 Enum class를 주로 쓰고 있었기에, 코드 스타일을 맞추려 Enum class를 쓰려고 노력하게 되었다. 그러던 어느 날, Enum class를 쓴 내 코드를 보고 팀장님이 던진 한마디."너, 여기서 Enum class 왜 쓰는지 알고 쓰는거야?" Enum class와 Enum의 차이에 대해 자세히 인지하지 못하고, 언제쓰면 효율적인지 알고 쓰는게 중요함을 잊고 무지성으로 코드를 짜려고했던 나를 돌아보게 하는 날이었다. 열거형 (Enumerator) 열거형을 쓰는 이유 프로그래머가 봤을 때, 직관적이기 때문에 가독성이 좋다. enum 으로 구성..

C++ 2023.12.22

[프로그래머스 Lv.0] 컨트롤 제트

* 비슷한 문제 https://chacha-nyang.tistory.com/13 [프로그래머스 Lv.2] 최댓값과 최솟값 운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어 chacha-nyang.tistory.com 위의 최댓값 최솟값 할 때 썼던 getline 을 써먹으면 되는 문제다. 레벨 0이어서 쉬워보이지만, getline 몰랐으면 귀찮았을 듯... (1) strList 에 차례대로 값 넣어주고 (2-1) Z가 아니면 숫자로 바꿔주고 (2-2) Z라면 그 전 값을 다시 빼주고 (3) 그렇게 합을 구하면 된다. #include #include #include ..

[프로그래머스 Lv.2] 피보나치 수

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include #include using namespace std; int solution(int n) { int answer = 0; std::vector vList..

[프로그래머스 Lv.1] 자릿수 더하기

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include using namespace std; int solution(int n) { int answer = 0; while(n > 0) { answer += n..

[프로그래머스 Lv.3] 야근 지수

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include #include #include using namespace std; long long solution(int n, vector works) { long..

[프로그래머스 Lv.2] 최댓값과 최솟값

운동은 "적절한 강도의 꾸준함"과 간혹 컨디션이 좋을 때 "근육통을 유발하는 강도"로 운동을 하면 근육 생성 및 유지에 효과가 좋다고 합니다. 뇌 운동도 비슷하다고 생각합니다. 매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는 쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는 "심심풀이땅콩코테"입니다. 간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도) 그냥 참고만 해주세요 :) (덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요) 평화적인 지적을 환영합니다.) #include #include #include #include #include using namespace std; // stringstream 사용 vector ge..

C++11 auto

auto 란? 컴파일 단계에서 오른쪽의 데이터를 기반으로 자료형을 추론해서 타입을 알아서 찾아주는 키워드. C++11 이전에도 존재하던 키워드이나, C++11 부터 선언의 초기화 식에서 형식이 추론되는 변수를 선언하는 역할을 하게 되었다. 때문에 Modern C++ 의 주요 변화 중 하나라고 볼 수 있다. (C++11 부터 Modern C++이라고 칭한다) 찾아보니 C++11 이전에는 자동 저장소 클래스에 있는 변수, 지역변수를 선언하는 역할이었다고 함. auto 예시를 들며 어떤 역할을 하는지 알아 본다. class Actor { public: int _hp; } // 자료형을 직접 명시했을 때 int a = 4; float b = 3.14f; double c = 9.82; Actor d = Actor..

C++ 2023.02.16