반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- git squash
- 시스템설계면접
- 가상면접으로대규모시스템
- s3이미지다운로드됨
- 가상면접3장
- 가상면접2장
- 디자인패턴
- 헤드퍼스트전략패턴
- 테스트코드책
- 시스템설계면접팁
- git commit 협업
- 리액트구글애널리틱스
- cypress React
- 리팩터링2판테스트
- react-ga
- gitsquash
- Git commit 합치기
- formik submitting not working
- file not found Error
- 전략패턴
- 시스템설계방법
- formik react-query submitting not working
- FirebaseAnalytics
- cypressBDD
- 시스템설계면접예시
- react
- git commit merge
- 시스템설계
- awss3
- 리팩토링2판4장
Archives
- Today
- Total
mingg IT
[Codility] PassingCars (Java) 본문
https://app.codility.com/c/run/trainingSEY3MV-T6R/
문제는 쉬운데 이를 어찌 효율적으로 짤것인가..
당연히 2중 포문 돌리는 순간 시간초과로 난리가 났다.
Map을 이용해서
0 0
1 1
2 1
3 2
4 3
으로 해당 인덱스까지 나온 1의 갯수를 구해주었다.
마지막 조건문이 P < Q 이기 때문에 (2,1)인경우를 빼주기 위해서 총 count된 1의 갯수에서 내가 거쳐왔던 이전의 1의 갯수를 빼준다. (말로 하니깐 이상한데 이런방식으로 했다. )
public class PassingCars {
public int solution(int[] A) {
int count = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < A.length; i++) {
if (A[i] == 1)
count++;
map.put(i, count);
}
int result = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] == 0) {
result = result + (count - map.get(i));
if (result > 1000000000) {
return -1;
}
}
}
return result;
}
}
사람들 코드보니 0에서 count하고 1일때 더하는 방식으로 굉장히 간단하게 짰던데 내머리론 아직 그 코드가 이해가지 않는다. ㅠㅠ
'코딩테스트' 카테고리의 다른 글
[LeetCode] 1005. Maximize Sum Of Array After K Negations (0) | 2022.04.10 |
---|---|
[Java] 프로그래머스 구명보트 (0) | 2021.11.29 |
[Java] compare 메서드 Override, 특정 규칙에 따라 정렬하기 (0) | 2021.07.25 |
[Java] n 진수로 바꾸는 방법 (0) | 2021.07.19 |
[JAVA] set -> int [] 로 변환하는 방법 (0) | 2021.07.19 |
Comments