문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..
💻dev
어느날 갑자기 IP가 바뀌었다. 왜? 서버 무료 사용량이 끝나서 기존 서버를 내리고 내가 새 서버를 구축하게 되었다. AWS EC2 인스턴스를 생성하고 필요한 설정을 마치고 배포까지 완료되었다. 오늘은 다른 기능을 개발 후 PR을 올렸는데 빌드테스트에서 뜻밖의 오류가 잡혔다. Redis connection 실패 오류였고, 그럴리가 없는데? 하고 서버에 ssh 접속을 했는데...안됨.. 사유: IP가..바뀌었다... 인스턴스에 할당된 퍼블릭 IPv4 주소는 변한다. EC2 인스턴스를 만들면 기본적으로 인스턴스마다 매핑되는 IP주소가 있다. 그러나 할당된 IP는 쉽게 변경될 수 있는 값이다. 인스턴스를 중지 후 재시작 하거나 최대 절전모드로 전환되면 이 퍼블릭 IP는 새로 할당된다. 그러므로 해당 인스턴스를..
문제 발생: 서버가 자꾸 죽다..? 현재 커뮤니티에서 팀을 꾸려서 팀프로젝트를 진행중이다. 나와 다른 백엔드 팀원 1명이서 서버 개발을 맡고 있고, 팀원 분이 서버 배포를 담당하셨다. 진짜 API 개발에 앞서 mock API만 개발해두고 서버에서 프론트엔드 분들이 swagger로 테스트할 수 있게 먼저 배포를 진행했고... 서버에 많은 작업이 일어날 일이 전혀 없는 그런 상태...였다. 근데.. 서버가.. 죽다? 처음에는 외부로부터의 비정상적인 접속인 줄 알았다. 삐빅- 아니었다. 서버에 접속하니 아무것도 안하는데 아래와 같이 메모리가 혼자 87%나 사용중이었다...(이러니까 금방 죽지ㅠㅠ) 원인 열심히 원인을 찾아 본 결과 의외로 간단한 문제였다. 메모리 부족!! 우리는 서버에 Spring boot와 ..
문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이상 주문해야 ..
문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovil..
문제 설명 철수는 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 합니다. 이 롤케이크에는 여러가지 토핑들이 일렬로 올려져 있습니다. 철수와 동생은 롤케이크를 공평하게 나눠먹으려 하는데, 그들은 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많습니다. 그래서 잘린 조각들의 크기와 올려진 토핑의 개수에 상관없이 각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것으로 생각합니다. 예를 들어, 롤케이크에 4가지 종류의 토핑이 올려져 있다고 합시다. 토핑들을 1, 2, 3, 4와 같이 번호로 표시했을 때, 케이크 위에 토핑들이 [1, 2, 1, 3, 1, 4, 1, 2] 순서로 올려져 있습니다. 만약 세 번째 토핑(1)과 네 번째 토핑(3) 사이를 자르..
결론부터 말하자면 Cookies에 속았다. 다시 생각해보면 내가 프론트엔드 쪽 지식이 너무 없었다. 상황 설명 프로젝트에서 JWT를 사용한 인증을 구현했다. 로그인시 서버는 클라이언트에게 Access Token과 Refresh Token을 반환한다. Access Token이 만료되면 클라이언트는 Refresh Token을 쿠키에 담아 토큰 재발급 API를 요청한다. 서버는 해당 Refresh Token이 유효하면 Access Token과 Refresh Token을 재발급해준다. 문제 발생 로그인시 클라이언트에게 Refresh Token을 반환할때 쿠키에 담아서 보낸다. 그러면 위의 캡쳐화면 속 Cookies에 알아서 세팅이 된다. 그래서 클라이언트가 서버에서 요청할 때도 Cookies안에 쿠키가 있으면 ..
문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습니다. 아래 예시는 캐릭터가 상대 팀 진영으로 가는 두 가지 방법을 나타내고 있습니다. 첫 번째 방법은 11..