본문 바로가기

분류 전체보기

(277)
백준 1398 - 동전 문제 https://www.acmicpc.net/problem/1398 1398번: 동전 문제첫째 줄에 테스트 케이스의 개수 T가 주어진다. 둘째 줄부터 T개의 줄에 초콜릿의 가격이 주어진다. 가격의 1015보다 작거나 같은 자연수이다.www.acmicpc.net 힌트 1더보기동전 교환 문제를 그리디 하게 풀려면 주어진 동전들의 값이 서로 서로소가 아니어야 함이 알려져 있다. 일단 적당한 범위 안에서의 답을 dp로 모두 구해놓고 dp로 도출한 해와 그리디로 푼 해의 차이를 비교해 보자. 유의미한 결과를 얻을 수 있는가?힌트 2더보기30, 40, 80, 90  해설더보기적당히 큰 범위 내에서 dp로 해를 찾은 뒤 그리디하게 구한 해와 비교해보자. 그러면 다..
PS 노베이스의 ICPC 도전 가이드 읽기 전 참고 이 글은 대학교에 입학 전 PS, 심지어 제대로 된 코딩 경험조차 없는 사람이 ICPC를 준비하는 법에 대한 법을 사족과 함께 설명한다. 각 주제 제목의 접두사에 사족이면 (사족)을 붙였으므로 정보 습득만을 필요로 하면 사족은 건너뛰고 보면 된다. 애매하면 붙이지 않았다. 이 사람은 뭐 하는 사람인가? 2021 Seoul Regional Persea Gratissima로 참가하여 예선 52위 2022 Seoul Regional FastIO로 참가하여 본선 24위를 했다. 글을 쓰는 2024년 지금은 개발자로 일하면서 추후 진로를 고민하고 있다. 비록 수상 기록은 없지만 나같이 경험 없는 사람이 대회에 도전하고자 할 때 참고가 되면 좋을 것 같다. (사족) 어떻게 시작했는가? "뭔가 프로그래..
리팩터링 2판 요약 - 챕터 6 6.1 함수 추출하기 배경 코드 이해를 돕기 위함 절차 함수를 새로 만들고 목적을 잘 드러내는 이름을 붙인다. 추출할 코드를 원본 함수에서 복사해 새 함수에 넣는다. 추출한 코드 중 원본 함수의 지역 변수를 레퍼런스 하거나 추출한 함수의 유효범위를 벗어나는 변수는 없는지 검사한다. 있다면 매개변수로 전달한다. 변수를 다 처리하면 컴파일 추출한 코드 부분을 새로 만든 함수의 호출로 바꾼다. 테스트한다. 추출한 함수와 비슷한 코드가 다른 곳에 있는지 살펴보고 있으면 추출한 함수로 바꿀지 결정한다. 6.2 함수 인라인하기 배경 6.1의 반대로 함수 이름보다 코드 그 자체가 이해하기 쉬운 경우가 있다. 절차 다형 메서드(Polymorphic Method)인지 확인. 그렇다면 하면 안 된다. 함수를 호출하는 곳을..
리팩터링 2판 요약 - 챕터 3 코드에서 나는 악취 냄새나면 당장 갈아라. -육아 원칙 3.1 기이한 이름 - Mysterious Name 함수, 모듈, 변수, 클래스 등은 그 이름만 보고도 무슨 일을 하고 어떻게 사용하는지 명확히 알 수 있어야 함. 이름만 잘 지어도 문맥 파악에 걸리는 시간을 절약할 수 있음. 책에서는 관련 기법으로 함수 선언 바꾸기, 변수 이름 바꾸기, 필드 이름 바꾸기가 등장할 예정. 3.2 중복 코드 - Duplicated Code 똑같은 코드를 하나로 통합하여 더 나은 프로그램을 만들 수 있다. 중복된 코드는 서로의 차이점을 찾게 되는 부담이 생긴다. 함수 추출하기, 문장 슬라이드하기, 메서드 올리기 기법으로 개선할 수 있다. 3.3 긴 함수 - Long Function 함수를 짧게 구성하면 이해, 공유, 선..
리팩터링 2판 요약 - 챕터 2 2.1 리팩터링 정의 명사: 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 동사: 소프트웨어의 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 겉보기 동작(Observable Behavior): 리팩터링 전과 후의 코드가 완벽히 똑같이 작동해야 함. 성능의 차이가 발생하고 같은 결과를 보여주기만 하면 됨. 2.2 두 개의 모자(Two hats) Two hats는 일인이역을 뜻함. 소프트웨어 개발의 목적을 "기능 추가", "리팩터링"으로 구분함. 소프트웨어를 개발할 때는 기능 추가 모자와 리팩터링 모자 두 개를 자주 바꾸면서 개발함. 본인이 어떤 모자를 썼는지 인지할 필요가 있음. 2.3 ..