분류 전체보기 (308) 썸네일형 리스트형 백준 9202 Boggle (파이썬) https://www.acmicpc.net/problem/9202 9202번: Boggle 각각의 Boggle에 대해, 얻을 수 있는 최대 점수, 가장 긴 단어, 찾은 단어의 개수를 출력한다. 한 Boggle에서 같은 단어를 여러 번 찾은 경우에는 한 번만 찾은 것으로 센다. 가장 긴 단어가 여러 개 www.acmicpc.net 풀이 이전에 풀었던 백준 전설19585 와 비슷한 문제이다. 이전 문제가 단순히 트라이를 사용하는 문제라면 해당 문제는 트라이와 DFS를 같이 조합해서 푸는 문제이다. 핑계처럼 들리겠지만 오랜만에 알고리즘 푸니까 쉽게 풀지는 못했다... 풀이법은 다음과 같다. 1. 문제에서 주어진 단어들로 트라이를 생성한다. 2. 주어지는 board를 기준으로 모든 칸마다 조건을 만족하면 DFS.. 백준 19585 전설 (파이썬) https://www.acmicpc.net/problem/19585 19585번: 전설 Sogang ICPC Team에는 색상 이름과 닉네임의 순서로 이여서 팀명을 지으면 ICPC 리저널에서 수상할 수 있다는 전설이 있다. 색상 이름들과 닉네임들이 주어질 때, Q개의 팀에 대해 다음 리저널에서 수 www.acmicpc.net 나의 풀이 (시간 초과) 문제자체는 쉬우나 데이터의 양때문에 시간초과가 났다. 문제 접근은 다음과 같이 하였다. 주어진 값 색상의 종류C, 닉네임의 개수 N의 범위는 1이상 4000이하이다. 그리고 팀 Q의 수는 1이상 20000이하이다. 모든 팀명은 2000이하이다. 팀명을 처음부터 마지막까지 같은 순회하면서 슬라이싱을 한다. 문제에서는 색상의 이름 + 닉네임일 경우를 판별해야 한.. 클린코드(Clean Code)를 읽고 클린 코드 (Clean Code) - 애자일 소프트웨어 장인 정신 지은이 : 로버트 C. 마틴 옮긴이 : 박재호, 이해영 출판사 : 인사이트(insight) ❓책을 읽게된 이유 이 책을 처음 접한 것은 2022년 우아한테크코스(이하 우테코) 5기에 지원하였을때이다. 당시 우테코에서는 과제를 진행하며 클린한 코드를 작성하는 것을 요구 했다. 당시 나는 클린한 코드에 대해 아는 것이 없었기에 부랴부랴 클린코드를 사서 목차 수준만 간단하게 눈으로 훑고 우테코 5기를 진행하였다. (그러나 학교와 병행하며 하기에는 너무 시간이 없어 결국 우테코 프리코스를 중간에 포기해야 했다.) 그리고 1년이 흘러 우테코 6기에 다시 도전하고 실패하며 “실패는 성공의 어머니라”는 말을 곱씹으며우테코 측에서 제시해준 백엔드 개발자.. 6장 AOP 6.1 트랜잭션 코드의 분리 비즈니스 로직과 트랜잭션의 경계를 설정하는 코드가 서로 얽혀있다. public void upgradeLevels() { TransactionStatus status = this.transactionManager.getTransaction(new DefaultTransactionDefinition()); try { **List users = userDao.getAll(); for (User user : users) { if (canUpgradeLevel(user)) { upgradeLevel(user); } }** this.transactionManager.commit(status); } catch (RuntimeException e) { this.transactionManag.. 5장 서비스 추상화 5.1 사용자 레벨 관리 기능 DB에 varchar 타입으로 선언하고 “BASIC”, “SILVER”, “GOLD”처럼 문자를 넣는 방법도 있겠지만 이렇게 일정한 종류의 정보를 문자열로 넣는 것은 별로 좋아 보이지 않다. 대신 각 레벨을 코드화해서 숫자로 넣으면 DB용량도 많이 차지하지 않고 가벼워서 좋다. Enum 타입사용 빠르게 실행 가능한 포괄적인 테스트를 만들어두면 기능의 추가나 수정이 일어날 때 그 위력을 발휘한다. 데이터 액세스 로직이 바뀌었다고 비즈니스 로직를 수정하는 일이 있어서는 안된다. UserDaoJDBC는 주어진 User 오브젝트를 DB에 정보를 넣고 읽는 방법에만 관심을 가져야지 비즈니스적인 의미를 지닌 정보를 설정하는 책임을 지는 것은 바람직하지 않다. → 생성자에서 초기 설정 .. 4장 예외 4.1 사라진 SQLException 예외를 catch 했다고 해도 다시 밖으로 예외를 던져줘야 한다. try { ... } catch(SQLException e){ // 예외를 잡고는 아무것도 하지 않는다. 예외 발생을 무시해버리고 정상적인 상황인 것처럼 //다음 라인으로 넘어가겠다는 분명한 의도가 있는 게 아니라면 연습 중에도 절대 만들어서는 안되는 코드이다. } 만약 catch를 하고 다시 던져주지 않으면 시스템 오류나 이상한 결과의 원인이 무엇인지 찾아내기가 매우 힘들다 System.out.println(e)이나 e.printStackTrace()를 통해 메시지를 출력하는 것은 다음과 같은 문제가 존재한다. 다른 로그나 메시지에 금방 묻혀버려 놓칠수 있다. 출력을 하는 것은 예외를 처리하는 것이 .. 코드리뷰시 다른 사용자의 Comment 숨기기 다른 사람의 코드를 리뷰 할 때 다음과 같이 다른 사람들의 코멘트에 가려 코드를 보기 어려울 상황이 발생하곤 한다. 이때 i를 누르면 코드만 보인다. ➕ pr에서 .을 누르면 해당 pr의 Web VS code로 넘어가 코드를 확인하기 수월해진다. 또한 Web VS code IDE에서 바로 코드 리뷰가 가능하다 코드를 리뷰를 하고 좌측에 있는 코멘트를 작성하면 된다. 깃 커밋 컨벤션 템플릿으로 설정하기 깃 커밋시 컨벤션을 템플릿화 해서 등록할 수 있다..gitmessage.txt 생성해 원하는 템플릿을 작성하기# : 형식으로 작성하며 제목은 최대 50글자 정도로만 입력# 제목을 아랫줄에 작성, 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성################# 본문(추가 설명)을 아랫줄에 작성################# 꼬릿말(footer)을 아랫줄에 작성 (관련된 이슈 번호 등 추가)################# feat : 기능 추가# fix : 버그 수정# docs : 문서 수정# test : 테스트 코드 추가# refactor : 코드 리팩토링# style : 코드 의미에 영향을 주지 않는 변경사항# chore : 빌드 부분 혹은 패키지 매니저 수정사항# cicd : C.. 3장 템플릿 3장 템플릿 1장 오브젝트와 의존관계 에서 다루었는 OCP를 다음과 같이 정의 내렸다. 💡 변화의 특성이 다른 부분을 구분해주고 각각 다른 목적과 다른 이유에 의해 다른 시점에 독집적으로 변경될 수 있는 효율적인 구조를 만들어주는것이라고 정의내렸다. 그리고 템플릿이란 💡 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법이다. 3.1 다시 보는 초난감 DAO 정상적인 JDBC 코드의 흐름을 따르지 않고 중간에 어떤 이유로든 예외가 발생했을 경우에도 사용한 리소스를 반드시 반환하도록 만들어야 한다. public void deleteAll() throws .. aws ec2(ami)의 nginx에 SSL인증서 받아서 https 통신하기 현상 certbot을 사용하기 위해 epel-release를 하였지만 해당 패키지를 yum에서 찾지 못했다고 나왔다. yum의 동작방식은 다음과 같다. 정확한 패키지가 로컬yum 저장소에 이미 존재한다면 인터넷 연결 없이 바로 해당 패키지를 설지할 수 있다. 만약 패키지의 의존성이 다른 패키지에 의해 충족되어야 한다면 필요한 모든 의존 패키지를 인터넷를 통해서 다운로드 한다. 요약하면 현재 나의 서버에 존재하는 yum 저장소에는 epel-release 패키지가 존재하지 않는다. 그렇기 때문에 에러가 난 것이다. 고치는 법 이를 해결하기 위해서는 epel-release가 있는 yum저장소를 나의 로컬 서버에 추가해주고 이를 설치하면 된다. 결론을 말하면 아마존(AMI3)의 보안정책이 바뀌면서 amazone.. 이전 1 ··· 8 9 10 11 12 13 14 ··· 31 다음