본문 바로가기

전체 글137

IOIOI(KMP 알고리즘) IOIOI 백준 5525번 문제https://www.acmicpc.net/problem/5525 5525번: IOIOIN+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇www.acmicpc.net   1. 문제    2. 풀이2.1 KMP 알고리즘2.1.1 아이디어이 문제는 주어진 문장열에서 특정 문자열이 몇 개나 있는지를 찾는 문제이다.이 문제는 다음과 같이 단순하게 문자열의 단어를 처음부터 비교하는 것으로 해결할 수 있다.주어진 각 문자열이 다음과 같다고 하자. [단어 찾기 그_1] [단어.. 2024. 6. 10.
커밋 메시지 수정하기(intelliJ) 커밋 메시지 수정하기 아래와 같이 다양한 상황에서 커밋 메시지를 수정하는 방법을 알아본다. 1. 최근의 커밋 메시지를 수정하고 싶은 경우 2. 과거의 커밋 메시지들을 수정하고 싶은 경우 3. 저장소에 이미 올라가 있는(Push 된) 커밋 메시지를 수정하고 싶은 경우 1. 최근의 커밋 메시지를 수정하고 싶은 경우_amend 커밋 메시지를 급하게 작성하느라 예기치 않은 오타가 발생하거나 여러 이유들로 인해, 메시지 작성 후 바로 수정하고 싶은 경우가 있다. 이럴 때는 amend 라는 커맨드를 사용해서 커밋 메시지를 수정할 수 있다. amend는 가장 최근 커밋을 수정하는 커맨드이다. 이를 이용해서 커밋 메시지만을 수정할 수도 있다. 아래와 같이 새로 number 필드를 추가했다고 하자. [변경_number .. 2023. 8. 13.
9. 단위 테스트 단위 테스트 1. 단위 테스트의 필요성 실제 코드는 여러 가지 요인에 의해서 변하기 마련이다. 실제 코드를 변경하면 상황에 따라 테스트 코드 또한 변경해 줘야 할 필요가 있다 하지만 작성되어 있는 테스트 코드가 가독성이 낮고, 복잡하게 구성되어 있다면 테스트 코드를 변경하기에는 어려움이 따르고 실제 코드를 변경하는데 걸림돌이 될 수 있다. 역으로 보기 좋게 작성된 단위 테스트는 코드에 유연성, 유지 보수성, 재사용성을 제공한다. 앞서 언급된 것처럼 가독성이 낮고 복잡한 테스트 코드는 실제 코드 변경에 어려움을 겪게 한다. 하지만 잘 짜인 단위 테스트는 실제 코드의 변경에 따른 변경사항과 사이드 이펙트를 쉽게 파악할 수 있게 해 준다. 또한 실제 코드의 변경에 따라 단위 테스트 역시 유연하게 수정될 수 있.. 2023. 6. 23.
6. 객체와 자료 구조 객체와 자료 구조 (어떤) 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 우수한 소프트웨어 개발자는 편견 없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택한다. -요약- 어설픈 캡슐화를 지양하고 추상화를 활용해라. 객체와 자료 구조를 명확히 구분하고 사용해라. 1. 객체 지향 1.1 모든 필드에 get과 set을 만들지 마라 모든 필드에 get()과 set()을 만든다면 이 객체는 자료 구조와 다를 바 없다. 형식적인 캡슐화를 하지말고 추상화를 통해 객체 내부의 값을 숨기고 역할을 부여하자 이런 방식은 더 유연하고 확장 가능한 코드를 작성하는데 도움이 된다... 2023. 6. 18.