TIL

2025.01.02

iiblueblue 2025. 1. 2. 12:10

Code KATA

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

https://iiblueblue.tistory.com/123

 

[2025.01.01] 수박수박수박수박수박수?

문제 설명길이가 n이고, "수박수박수박수..."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩

iiblueblue.tistory.com

https://iiblueblue.tistory.com/124

 

[2025.01.02] 내적

문제 설명길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다.

iiblueblue.tistory.com

오답노트 작성할 내용도 없이 별로 어렵지 않게 풀 수 있었다.

 

그래서 다른 문제들을 더 풀어봤다.

https://iiblueblue.tistory.com/125

 

[2025.01.02] [PCCE 기출문제] 1번 / 문자 출력

문제 설명주어진 코드는 변수에 데이터를 저장하고 출력하는 코드입니다. 아래와 같이 출력하도록 빈칸을 채워 코드를 완성해주세요.ㄱ* 빈칸 채우기 문제  입출력 예321Let's go!  문제 풀이풀

iiblueblue.tistory.com

PCCE 기출문제라고 되어 있어서 풀었는데 level 0이라 그런지 아주 기초적인 내용을 다룬 문제였다. 심지어 처음 보는 빈캄 채우기 문제여서 금방 간단히 풀이했다.

 

조금 더 어려운 문제를 풀고 싶어서 level 1의 다른 기출문제도 풀이해봤다.

https://iiblueblue.tistory.com/126

 

[2025.01.02] [PCCE 기출문제] 9번 / 지폐 접기

문제 설명민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30*15이고 지폐의 크기가 26*17

iiblueblue.tistory.com

문제가 길어서 어렵지 않을까 걱정했는데 문제가 긴 만큼 설명이 잘 되어 있고 심지어는 의사코드까지 작성되어 있어서 그대로 구현하여 성공했다.

 

마지막으로 31일날 풀었던 문제지만 개념을 정리하는데 오래 걸려 이제야 정리를 완료하였다.

https://iiblueblue.tistory.com/122

 

[2024.12.31] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지

문제 설명당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는

iiblueblue.tistory.com

문제를 풀이하는 방법에 대해서 적고 이진탐색을 이용한 문제여서 이진탐색에 대해 정리한 개념을 함께 첨부하였다.

 

 

C++

코딩 테스트 문제를 풀다가 이진 탐색을 활용하는 문제를 만나게 되었는데 이진 탐색에 대한 개념이 기억이 나지 않아서 찾아보면서 풀었다. 이 기회에 이진 탐색과 선형 탐색에 대해 정리하는 글을 적어보았다.

https://iiblueblue.tistory.com/128

 

선형 탐색과 이진 탐색

⊙ 선형 탐색과 이진 탐색의 탐색 방법을 안다.⊙ 선형 탐색과 이진 탐색의 각각 유리한 상황을 이해한다. ⊙ 이진 탐색을 구현한다. 선형 탐색선형 탐색이란 정보를 앞에서부터 순서대로 찾는

iiblueblue.tistory.com

 

복사 생성자의 얕은 복사와 깊은 복사에 대해서도 예제와 함께 자세히 다시 정리해보았다.

https://iiblueblue.tistory.com/118

 

 

 

Quest

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

UML에는 borrowBook 함수만 있을 뿐 borrowBookByTitle, borrowBookByAuthor로 대여 함수를 나누지 않았다. 그래도 작가로 검색하여 대여하기 위해서내는 꼭 필요하다고 생각해서 두 함수를 나누어서 구현하였는데 생각해보니 그럴 필요가 없었다.

 

함수를 나누면서 BorrowManager에는 BookManager가 필요해졌다. getBookByAuthor 함수를 사용해야 작가 이름으로부터 책 제목을 받아올 수 있었기 때문이다. 그래서 BorrowManager안에 BookManager 변수를 추가하였고 main에서 선언한 BookManager와 같은 BookManager를 사용하여야 했기 때문에 참조자로 BookManager를 받아와 초기화하는 생성자도 새로 만들었다. borrowBookByAuthor 때문에 너무 많은 수정이 생긴 것이다. 

	...
        else if (choice == 6){
            // 6번 선택: 저자명으로 책 대여
            // 사용자로부터 저자명을 입력받아 책을 대여합니다.
            string author;
            cout << "책 저자: ";
            cin.ignore(); // 이전 입력의 잔여 버퍼를 제거
            getline(cin, author); // 제목 입력 (공백 포함)
            borrow_manager.borrowBook(manager.getBookByAuthor(author)->title);
        }
        ...

생각해보니 getBookByAuthor을 굳이 BorrowManager 안에 넣어서 사용할 필요가 있는가 싶었다. 사용자에게 저자명을 입력받고 나서 main에서 바로 getBookByAuthor을 사용하여 저자명을 책 제목을 바꾸어 그대로 borrowBook을 호출하면 안된는 걸까? 그런 의문을 가지고 코드를 수저하였다. 오히려 수정도 적게, UML에 맞춰서 코드를 작성할 수 있었다.

https://github.com/iiblueblue/NBC_C-_Summary.git

 

GitHub - iiblueblue/NBC_C-_Summary: [4번 과제] CH 2 C++ Summary

[4번 과제] CH 2 C++ Summary. Contribute to iiblueblue/NBC_C-_Summary development by creating an account on GitHub.

github.com

 

수정하여 깃허브에 업로드하고 제출하였다.

 

'TIL' 카테고리의 다른 글

2025.01.06  (0) 2025.01.06
2025.01.03  (0) 2025.01.03
2024.12.30  (0) 2024.12.30
2024.12.27  (0) 2024.12.27
2024.12.26  (0) 2024.12.26