목록전체 글 (154)
늘
https://programmers.co.kr/learn/courses/30/lessons/1835?language=cpp 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 풀이 처음에는 수학문제인가 싶어서 공식을 찾으려 해봤지만 잘 찾기 어려웠다. 그래서 완탐을 해야하나 싶어서 시간복잡도를 계산해보니 8개 모두를 순열을 돌리므로 8! = 40320 *100(조건) = 4032000 약 400만밖에 안되므로 여유로웠다!😳 그래서 완탐을 돌리고 조건에 맞는것만 찾아서 카운트하는 방식으로 풀었다. 소스코드 #i..
https://programmers.co.kr/learn/courses/30/lessons/60057?language=cpp 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr Level 2 문제이다. 문제를 잘 못읽으면 해매기 쉬울 문제인것 같다. 알고리즘 풀이 과정 묶을 문자열 길이를 1개 씩 자를때, 2개 씩... 계속해서 하나하나 비교해주면 된다. input의 길이가 1000까지 이므로 for문 3번까지 돌려도 1초를 안넘기므로 시간제한은 걱정없이 하면 된다. #include #include usi..
오랜만에 백준 문제 글을 작성하는 것 같다.😳 회문.. 오래 걸렸다. 처음 문제를 푸는데 안 풀려서 잠시 미뤄두고 다시 머리를 식히고 푸니 그제야 해결이 되었다. 요즘 구현 문제들을 푸는데 상당히 아이디어를 요구하는 방식과 반례 처리? 가 중요한 것 같다는 생각이 든다. 그리고 컨디션이 중요한 느낌..(희한하게 어쩔 때는 잘 풀리는데 안 풀리는 날에는 하나도 안 풀리는 문제 부류...🤣🤫) 풀이 과정을 소개해보겠다. 처음에는 재귀문을 통해서 해결하려고 했다. 시간 초과 풀이 #include #include using namespace std; string s; int l = 0; int r; int flag = 0; int check(int l, int r) { while (l < r) { if (s[l..
대용량 데이터 처리하는 방법에 여러 방법이 있다. Load Balancer Request를 연결된 서버들에게 나누어줌 장애 발생시 해당 LB(Load Balancer)에게 할당된 IP를 다른 LB에게 넘겨줌 DBMS 2개(Master-Slave = Primary-Secondary) primary(실제 서비스) primary에서 장애 발생시 secondary가 primary로 되고, 장애가 해결되도 primary는 secondary 역할을 하게 된다. primary(CUD), secondary(R) 두대를 두고 primary의 데이터를 secondary로 계속 Replication을 통해 복제한다. Object Storage Service (File-Server) 파일을 저장할 서버를 둘 경우 총 3개의 ..
프로젝트를 진행하면서 휴대폰 인증 기능이 추가되어 과정을 기록할 겸 적어보겠다. 이용한 api는 네이버 클라우드에서 제공해주는 한 달에 50건 무료인 api를 사용했다. https://www.ncloud.com NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com 네이버 클라우드에 우선 가입을 해주고 콘솔에서 빨간 박스로 들어가 줍니다. 들어간 후 api 가이드에 따라 진행하면 수월하다. 친절하게 설명이 되어 있는데 설명에 따라 우선 프로젝트를 생성해 줍니다. 그 후 SMS를 눌러줍니다..
문제부터 보면 전형적인 DP 문제라고 생각이 든다. 하지만 문제에 시간초를 보면 2초나 주어진다. 그래서 이 문제를 DP로 풀어야만 하는가 의문이 들면서 접근을 했다. 우선 문제 풀이 생각으로는 시간 제한도 2초이고 입력 수도 1000인것을 감안해서 넉넉하기 때문에 1일부터 Ti 시간만큼 뛰어가면서 전부 더해보는 방식으로 했다. #include #include #include using namespace std; int n; int visited[1001]; vector works; int answer; int pays; void start(int x, int pre) { if (x == n) { answer = max(answer, pays); return; } if (x > n) { answer = ..
어렵지 않았던 문제였다. 주의할 점으로는 동일한 시간대일때 트럭이 먼저 빠지고, 새로운 트럭이 들어갈 수 있다는 것이었다. 처음에 두개를 나눠서, 빠지는 데에 1초 + 들어가는데 1초를 해서 어디서 오류가 발생했는지 찾느라 조금 걸렸던것 빼곤 괜찮았다 ^^ #include #include using namespace std; int currentWeight; vector carsInBridge; // 다리위에 있는 차들의 무게와 시간 int solution(int bridge_length, int weight, vector truck_weights) { int answer = 1; for (int i = 0; i < truck_weights.size(); i++) { if (!carsInBridge.em..
백신 2차까지 맞고 팔을 잃었지만 아직 나에겐 다른 한쪽 팔이 남았다 🤫🤫 귀와 팔 한쪽이 멀쩡하기 떄문에 우아한 세미나에서 기선님의 강의를 듣고 직접 적용해보고 정리해보려고 한다. 멋있음ㅋ META-INF/spring.factories 에서 이렇게 자동 설정을 한다. 이러한 자동설정들이 제공되어 있는 게 스프링 부트이다. 순서는 애플리케이션 설정한 빈이 먼저 등록되고 그 후에 자동 설정으로 제공하는 빈이 등록된다. 만약 앞에서 애플리케이션에서 설정한 빈 등록이 있고, 자동 설정으로 제공하는 빈의 빈 아이디가 중복이 되있다면 충돌 나서 애플리케이션이 뜨지 않는다. 또한 자동 설정으로 제공하는 빈끼리도 중복되면 충돌나서 애플리케이션이 뜨지 않는다고 한다. application.properties/ appl..
테스트코드를 작성해보면서 JUnit4나 5를 사용하는데 이번 포스팅에서 4와 5를 비교하고 JUnit5 사용법에 초점을 맞춰서 정리해두려고한다. Junit5 Platform: Junit으로 작성한 테스트를 실행해주는 런처를 제공한다. TestEngineApi 제공한다. Vintage: Junit3과 4를 지원하는 TestEngine 구현체 Jupiter: Junit5를 지원하는 TestEngineApI 구현체 Junit 5는 스프링부트 2.2 버전 이상부터는 기본적으로 의존성이 장착되어 따로 설정할 필요가 없다. Junit5의 애노테이션들 @Test - 테스트 메서드를 나타내주는 애노테이션이다. - Junit4와 달리 어떠한 속성도 선언하지 않는다. //Junit4 @Test(expected = Exce..
WHEN? 언제 무엇이 왜 사용되는가? - 로그인 처리 방식에 대해서 고민하면서 필터와 인터셉터를 공부했는데 둘이 비슷하다고 생각되고 둘 중에 어느 때에 무엇을 선택해야 할지 명확한 해답이 안 나와서 글을 적으면서 정리해보려고 한다. *공부를 하던 중 AOP와도 비교를 하는 글들이 보여서 짧게 추가해보았다. (개인적인 생각!) 우선 AOP는 앞서 필터와 인터셉터와는 다르게 비즈니스적 관점에서 사용할 때, 사용된다고 생각된다. ex) 로직의 시간 측정, 트랜잭션 관리, 에러 처리 등, 반면에 필터나 인터셉터는 인증/인가, 세션 체크, 인코딩 확인 등 좀더 웹과 관련된 공통 관심사 처리하는 느낌으로 구별하면 될 것 같다. 이제 본격적으로 필터와 인터셉터를 분석해 보겠다. 제목에서도 보았듯이 필터는 Dispa..