[백준/실버 III] 2579번 계단 오르기
·
알고리즘
규칙계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시 밟아야 한다. 풀이 계단의 개수(n)가 6이고, 점수가 10, 20, 15, 25,10, 20 이라는 값을 입력 받으면 위와 같은 그림이 됩니다.이때 규칙을 지키며 최대 값을 구하기 위해서 전전 계단의 최대값 + 도착계단의 값과 전전전 계단의 최대값 + 전계단 값 + 도착계단의 값중에 큰 값을 구해야합니다. 첫번째 계단의 최대값은 계단이 하나뿐이라서 stairs[0] 값인 10 입니다. 두번째 계단의 최대값은 계단이 2개라서 stairs[0]과 sta..
FileZilla 설치 및 사용법: 에러 해결, 파일 비교, 폴더 지정 팁
·
DevOps
파일질라 설치가 안될때FileZilla는 FTP를 통해 파일을 업로드하거나 다운로드할 때 매우 유용한 툴입니다. 그러나 설치 과정에서 문제가 발생할 수 있습니다.  기본 다운로드 페이지에서 FileZilla를 다운로드하면 광고가 포함된 설치 파일을 받을 수 있습니다. 이로 인해 윈도우에서 다음과 같은 에러가 발생할 수 있습니다:  이 문제를 해결하려면, 다운로드 페이지 하단에 있는 Show additional download options 링크를 클릭합니다.그러면 다음과 같은 화면이 나옵니다:  여기서 가장 상단에 있는 FileZilla_3.67.1_win64-setup.exe 파일을 다운로드하여 설치하면 문제 없이 진행됩니다. 로컬 파일과 운영 파일 비교하는 방법FileZilla를 사용하면 로컬 파일과..
안드로이드 알림 전송에서 CacheBuilder를 활용한 토큰 관리
·
TIL
프로젝트 배경회사 프로젝트 중 푸쉬 알림을 여러 앱으로 전송하는 기능을 구현해야 했습니다. 이 기능의 주요 요구사항은 다음과 같습니다:여러 앱으로 알림을 보낼 수 있어야 한다.한 사이트에서 메세지 받을 앱의 키 값, 유저 토큰 값, 메세지를 전달해준다.천만 건의 데이터가 최대한 빠른 시간 안에 전달되어야 한다.처음에는 매번 FCM 서버로부터 새로운 토큰을 요청하는 방식으로 구현했지만, 이는 비효율적이었습니다. 따라서, 이를 개선하기 위해 Google Guava의 CacheBuilder를 사용하여 토큰을 캐시하고 일정 시간마다 갱신하도록 했습니다.문제점기존 방식의 문제점은 다음과 같았습니다:네트워크 부하 증가: 매번 FCM 서버로부터 새로운 토큰을 요청하므로 네트워크 부하가 커짐.응답 시간 지연: 토큰을 ..
[백준/실버 III] 1003번 피보나치 함수
·
알고리즘
주어진 문제는 피보나치 수를 계산하면서 0과 1이 각각 몇 번 출력되는지 세는 프로그램을 작성하는 것입니다. 이 문제를 해결하기 위해 피보나치 수의 재귀 호출을 추적하면서 각 호출에서 0과 1이 출력되는 횟수를 기록해야 합니다.문제의 핵심은 피보나치 수를 계산할 때 발생하는 중복 계산을 피하고 효율적으로 해결하는 것입니다. 이를 위해 동적 프로그래밍(DP)을 사용할 수 있습니다. DP를 사용하면 이미 계산된 피보나치 값을 저장하여 중복 계산을 피할 수 있습니다. 1. 동적 프로그래밍을 이용한 메모이제이션:0과 1의 출력 횟수를 저장하는 배열을 생성합니다.미리 계산된 값을 저장하여 중복 계산을 피합니다.2. 피보나치 수 계산:피보나치 수를 재귀 호출 없이 반복문을 통해 계산합니다.각 피보나치 수를 계산하면..
헤드 퍼스트 디자인 패턴 | 07장 적응시키기 (퍼사드 패턴)
·
TIL
퍼사드 패턴(Facade Pattern)서브 시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 줍니다. 또한 고수준 인터페이스를 정의하므도 정의하므로 서브시스템을 더 편리하게 사용할 수 있습니다.구성 요소Client: 퍼사드를 통해 서브시스템을 사용하는 주체입니다.Facade: 서브시스템을 캡슐화하고 단순한 인터페이스를 제공하여 클라이언트가 서브시스템과 상호작용할 수 있게 합니다.Subsystem: 퍼사드가 캡슐화하는 복잡한 시스템입니다. 서브시스템은 클라이언트에게 직접 노출되지 않으며, 퍼사드를 통해서만 접근합니다.코드Client:public class HomeTheaterTestDrive { public static void main(String[] args) { // 구성 ..
[백준/실버 IV] 17219번 비밀번호 찾기
·
알고리즘
이 문제는 경민이가 사이트 주소와 비밀번호를 빠르게 검색할 수 있도록 해주는 프로그램을 작성하는 것입니다. 이를 위해 HashMap을 사용하여 사이트 주소를 키로, 비밀번호를 값으로 저장한 후, 검색 요청이 들어올 때마다 빠르게 비밀번호를 찾아 출력하면 됩니다.입력 처리: 먼저 저장된 사이트 주소와 비밀번호의 수 N과 비밀번호를 찾으려는 사이트 주소의 수 M을 입력받습니다.HashMap 구성: N개의 사이트 주소와 비밀번호를 HashMap에 저장합니다.비밀번호 검색: M개의 비밀번호를 찾으려는 사이트 주소에 대해 HashMap에서 비밀번호를 검색하여 출력합니다.public class Main { public static void main(String[] args) throws IOException { ..
헤드 퍼스트 디자인 패턴 | 07장 적응시키기 (어댑터 패턴)
·
TIL
어댑터 패턴(Adapter Pattern)특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.구성 요소Client: Target 인터페이스를 통해 어댑터를 사용하여 기능을 요청하는 주체입니다.Target(I): 클라이언트가 사용할 수 있는 인터페이스를 정의합니다. 클라이언트는 이 인터페이스를 통해 서비스를 사용합니다.Adapter: Target 인터페이스를 구현하며, 하나 이상의 기존 인터페이스를 사용하여 클라이언트의 요청을 처리합니다. 어댑터는 클라이언트와 기존 클래스 간의 중재 역할을 합니다.Adaptee: 호환되지 않는 인터페이스를 가진 기존 클래스입니다. 어댑터는 이 클래스를 사용하여 클라..
[백준/실버 IV] 11399번 ATM
·
알고리즘
이 문제는 그리디 알고리즘을 사용하여 해결할 수 있습니다. 문제의 핵심은 돈을 인출하는 데 걸리는 시간을 최소화하는 것입니다. 이를 위해서는 인출 시간이 적게 걸리는 사람부터 인출을 시작하는 것이 최적의 방법입니다.이 문제를 해결하는 방법은 다음과 같습니다:입력 처리: 먼저, 사람의 수 n과 각 사람이 인출하는 데 걸리는 시간을 입력받습니다.정렬: 각 사람이 인출하는 데 걸리는 시간을 오름차순으로 정렬합니다.총 대기 시간 계산: 정렬된 순서에 따라 각 사람이 인출하는 데 걸리는 총 시간을 계산합니다.이 접근법은 각 사람이 인출을 시작하기까지 기다리는 시간을 최소화하여 전체 인출 시간을 최소화합니다.예를 들어, 5명의 사람들이 있고, 인출 시간이 [3, 1, 4, 3, 2]로 주어진 경우:정렬된 후: [1..
치령
'분류 전체보기' 카테고리의 글 목록