전체 글 151

[2023-01-03]

Start PassingCars 문제 아래는 어제 상태이다.. 이중 for문이 돌아가고 있어서 시간복잡도는 O(n^2)인 아주 여므벼으인 상태이다. 얼른 마저 풀어보겠습니당.. 성능 테스트 20%가 나왔는데 result가 1,000,000,000 일 경우 -1 처리 해주는 부분 때문인 것 같다. 지금 이 레슨을 극복하지 못하는 이유는 커다란 입력 범위와 타이트한 시간 제한에 비해 시간복잡도가 너무 크다는 점이다. 커다란 입력 범위를 줄일 수 있다고 판단되는 로직을 짜보고 있는 중이다. 위와 같이 짠 이유는 0과 1이 반반일 경우 이중 for문으로 돌게 되는 값이 원래 코드에서는 n * n = n ** 2였지만 (n/2) * (n/2) = n**2 / 4 가 될 것이라고 생각했다. 물론 위처럼 0과 1이 ..

코딩테스트 2023.01.03

[뱅크샐러드] 하루에 1000번 배포하는 조직 되기

https://blog.banksalad.com/tech/become-an-organization-that-deploys-1000-times-a-day/ 하루에 1000번 배포하는 조직 되기 | 뱅크샐러드 안녕하세요, 뱅크샐러드 Engineering Foundation의 Framework Team 소속 Server Engineer… blog.banksalad.com 친구가 뱅샐은 배포 100번한대..! 이래서 우와 진짜? 이러고 검색해봤는데 1000번이었다.. 테크 기업에게 있어서 '확장 가능한 기술 역량을 보유했는지'는 굉장히 중요한 부분이다. 확장 가능한 기술 역량을 보유했느냐를 판단할 때 사용하는 지표 중 하나가 '오늘 배포 몇 번?' 이다. 잦은 배포는 많은 비즈니스 요구 충족을 뜻하고 더 많은 ..

카테고리 없음 2023.01.03

[2023-01-01]

FrogJmp 문제 입력 범위가 1부터 10억까지이기 때문에 X와 Y가 각각 1과 10억이고 D가 1로 입력값이 들어오고 반복문을 돌려서 체크하게 되면 10억번 반복문이 돌아간다. 따라서 문제 그대로 구현하기보다는 최대한 반복문을 안 쓸 수 있는 방법을 택하는 것이 좋겠다. PermMissingElem 문제 배열 원소 구성은 1부터 N+1로 되어있고 배열의 크기가 4라면 1 ~ 5로 구성되어 있다는 의미이다. 1부터 N + 1이 배열에 있는지 찾으려면 이중 for문으로 이루어져야 할 것이라고 생각했다. 시작값이 1이고 끝나는 값이 N+1인 for문이 하나 돌고 array에 1 ~ N+1이 있는지 확인하기 위한 for문이 돌아서 총 2개 최악의 경우 N이 100,000 100,000 * 100,000 일 ..

코딩테스트 2023.01.01

[2022-12-27]

문제가 어렵지는 않았던 것 같은데 왜 어제는 그렇게 풀었나 싶다. 수와 수 사이에 짝을 이루게 되면 홀수 크기의 배열에서 짝수 개의 값과 홀수 개의 값으로 나누어지게 될 것이다. -> 코드 로직 아래는 OddOccurrencesInArray에 대한 O(n) 정답 코드이다. // you can also use imports, for example: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int solution(int[] A) { int result = 0; Map map = new..

코딩테스트 2022.12.28

카카오 장애

인프라 설비 - 물리적 failover가 필요한 부분.. 데이터 - 신뢰의 근간이 되는 부분. 장애 당시 잘 동작한 부분 하지만 더욱 보완할 수 있는 부분을 찾음. 운영 및 관리 도구가 문제가 되었다고 한다..? 이 부분으로 인해 복구에 오랜 시간을 소요했다고.. 권한관리나 소스관리 등등 구성원이 자원에 접근하기 위한 관리가 포함됨. 서비스 플랫폼은 컨테이너 오케스트레이션 기반 플랫폼, 장애 전파..의 중간 역할을 함.. 애플리케이션의 경우 아래의 시스템들의 위에 올라가서 동작하고 있다. 일부의 병목으로 애플리케이션 역시 문제가 발생할 수 있다. 이중화가 중요한데, 이중화에 잘 대응하기 위해 필요한 부분들이 있다.

카카오 세션 2022.12.15

섬세한 ISFP의 코드 가독성 개선 경험

다른 뜻을 가진 단어 구분하기 get과 query의 차이 get은 어떤 것을 가지고 와서 필히 어떠한 액션을 취한다. 따라서 get이라는 단어가 들어간 메소드를 사용했을 때 데이터가 존재하지 않으면 error를 던진다(가지고 온 데이터로 무언가를 해야하는데 없기 때문에..!) 반면 query는 데이터가 없을때 null을 던진다. -> 묘한 의미 차이를 캐치해서 코드 가독성을 높일 수 있다. 문제 해결뿐만 아니라 올바른 명칭 사용을 통해 가독성도 높아졌다. 보다 구체적인 단어로 바꾸기 대체할 경우 광범위한 단어의 의미를 정확한 의미로 좁힐 수 있다. 반대의 경우도 있다. 위의 경우가 더욱 정확하게 작성한 것이지만 오히려 아래의 경우가 한 눈에 들어온다. 의도를 아래와 같이 드러내는 것이다.. 코드는 길어졌..

카카오 세션 2022.12.15