TIL

2025.01.03

iiblueblue 2025. 1. 3. 20:35

Code KATA

오늘치의 알고리즘 코드카타를 풀이하고 정리하였다

https://iiblueblue.tistory.com/129

 

[2025.01.03] 약수의 개수와 덧셈

문제 설명두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를

iiblueblue.tistory.com

내일치의 알고리즘 코드카타도 미리 풀이하고 정리하였다.

https://iiblueblue.tistory.com/130

 

[2025.01.04] 문자열 내림차순으로 배치하기

문제 설명문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작

iiblueblue.tistory.com

그리고 오늘 다른 문제 하나를 더 풀이했었는데 생각보다 너무 어려워서 결국 풀이해내지 못했다.

https://school.programmers.co.kr/learn/courses/30/lessons/340198

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

완전 탐색으로 풀이하려고 했지만 어째선지 일부는 성공이고 일부는 실패하였다. 어떤 이유에서 생긴 문제인지 결국 알아내지 못해서 끝까지 풀이하지 못했다. 꽤 오랜시간 붙잡고 있었는데 풀지 못해서 아쉽다. 다른 알고리즘을 사용해서 풀이해봐야할 것 같아 다음에는 DP 알고리즘을 공부해보고 풀이해보려고 한다.

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

bool checkCanBeLaid(vector<vector<string>> park, int matSize, int row_index, int col_index)
{
    for (int row = row_index; row < row_index + matSize; row++)
    {
        for (int col = col_index; col < col_index + matSize; col++)
        {
            if (park[row][col] != "-1")
            {
                return false;
            }
        }
    }
    return true;
}

int solution(vector<int> mats, vector<vector<string>> park) {
    int answer = -1;
    sort(mats.rbegin(), mats.rend());
    for (int matIndex = 0; matIndex < mats.size(); matIndex++)
    {
        for (int row = 0; row <= park.size() - mats[matIndex]; row++)
        {
            for (int col = 0; col <= park[0].size() - mats[matIndex]; col++)
            {
                // [row, col]부터 시작해서 왼쪽, 아래로 mat크기만큼 펼칠 수 있는지 확인
                if (checkCanBeLaid(park, mats[matIndex], row, col))
                {
                    answer = mats[matIndex];
                    return answer;
                }

            }
        }
    }

    return answer;
}

 

 

C++

전부터 정리하려고 했던 스마트 포인터에 대해서 정리했다.

https://iiblueblue.tistory.com/131

 

스마트 포인터(Smart Pointer)

⊙ 스마트 포인터의 원리와 필요성에 대해 이해한다. ⊙ 스마트 포인터의 종류가 무엇이 있는지 안다. ⊙ unique_ptr, shared_ptr, weak_ptr의 차이와 특징을 이해한다. 스마트 포인터란?동적으로 할당된

iiblueblue.tistory.com

 

 

Quest

  • [3번 과제] CH 2 템플릿 및 STL
  • [4번 과제] CH 2 C++ Summary

4번 과제 풀이 해설 강의를 들으면서 unordered_map을 사용하지 않았다는 사실을 알게 되어 해설 강의 후 수정하여 업로드 하였다.

 

4번 과제의 Initialize 함수를 어디에 사용하는지 궁금하였는데 풀이를 들으면서 내가 구현한 것과는 다른 방법으로 구현하신걸 확인하였다. 나는 map에 Insert로 책을 추가하는 방식으로 구현하였는데 풀이는 그냥 map이름에 [타이틀]을 붙여서 초기화해주는 방식으로 적용된 것 같았다. 그래서 나는 책을 add 해줄 때 호출하게 하였지만 풀이에서는 main이 시작할 때 한번 초기화를 해주고 시작하는 것 처럼 보였다.

 

아직도 사실 구조가 맞는지는 잘 모르겠다. 책에 대한 데이터를 가지고 있는 BookManager와 BorrowManager에 있는 책 리스트들이 한 곳에 있어야 하는 것이 아닌가 싶었다. 두 데이터가 동시에 업데이트 되도록 구현해주거나 아니면 한 곳에서 관리하는 방식이 데이터를 사용할 때 두 데이터에 차이없이 더 정확할 것 같았다.

'TIL' 카테고리의 다른 글

2025.01.07  (0) 2025.01.07
2025.01.06  (0) 2025.01.06
2025.01.02  (0) 2025.01.02
2024.12.30  (0) 2024.12.30
2024.12.27  (0) 2024.12.27