inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

3. 매출액의 종류(Hash, sliding window)

선생님 질문있습니다.

155

궁콘이

작성한 질문수 18

1

import java.util.HashMap;
import java.util.Scanner;

public class Main {

static void Solution(int n, int k, int[] arr){

int lt = 0;
HashMap<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < k; i++) {
map.put(arr[i],map.getOrDefault(arr[i],0)+1);
}
String result = map.size()+" ";
for (int rt = k; rt < n; rt++) {
map.put(arr[rt],map.getOrDefault(arr[rt],0)+1);
map.put(arr[lt],map.getOrDefault(arr[lt],1)-1);
if(map.get(arr[lt]) == 0) map.remove(arr[lt]);
result += map.size()+" ";
lt++;
}
System.out.println(result);
}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
Solution(n, k, arr);
}
}

선생님, 만약 k = 4일때 강의에서는 0~2번까지만 미리 구해서 map에 넣어둔 상태에서 아래 투포인트 for문에서

1. rt값 더하고 

2. map.size() 입력하고

3. lt값 빼고 , lt == 0 체크 

이런식으로 진행하시는데 

제 로직은 첫for문에서 0~3까지 다 구해놓고 처음 map.size()를 초기값으로 준 후 다음 투포인트 for문에서

1. rt값 더하고

2. lt값 뺴고, lt == 0 체크

3. map.size() 입력하고 

이렇게 로직을 구현했는데 TimeLimit이 발생하네요.

결국에는 그림으로 설명해주신것 처럼 네칸씩 구하는

방식은 똑같은것 같은데 이유를 알 수 있을까요..

코테 준비 같이 해요! java

답변 1

0

김태원

안녕하세요^^

답을 result라는 스트링에 처리하면 속도가 떨어집니다.

다음 글을 참조하세요.

https://jaehun2841.github.io/2019/03/01/effective-java-item63/#%EC%84%9C%EB%A1%A0

ArrayList<Integer> result = new ArrayList<>(); 선언하시고

ArrayList에 add한 후 출력하시면 통과될겁니다.

0

궁콘이

오! 감사합니다. 선생님은 천재십니다.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

69

2

갑자기 채점 사이트가 바뀌었어요

0

50

1

문제 리스트 페이지

0

41

1

채점 사이트 관련 질문드립니다

0

38

1

봉우리 문제 질문입니다

0

102

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

72

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

78

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

76

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

94

2

6-7 강의에서

0

53

1

6-6. 장난꾸러기 질문 있습니다.

0

50

1

강의 수강후 코딩테스트

0

124

1

answer 변수 사용 여부

0

50

1

2중 for문

1

96

2

2-11. 임시반장정하기 (Runtime Error)

0

66

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

75

1

이런 풀이는 어떨까요

0

50

1

자바 스트림 방식의 효율성 질문 드립니다.

0

62

1

알고리즘 자료 구조들..

0

68

1

StringBuilder vs BufferdWriter

0

52

1

원더랜드(프림)

0

55

1

이런 코드는 어떤가요?

0

66

1

bfs 풀이

0

61

1

병합정렬

0

58

1