1. 알고리즘 문제를 2개 풀었다.
1) 백준 2559
처음엔 좀 이렇게 무지성 코드 였고ㅎ (부끄럽지만 공개......)
더보기
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
nums = new int[N+1];
sums = new int[N+1];
st = new StringTokenizer(br.readLine());
for (int i=1; i<=N; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
int sum = 0;
for (int i=1; i<K+1; i++) {
sum += nums[i];
}
sums[K] = sum;
int max = sum;
for (int i=K+1; i<N+1; i++) {
sums[i] = sums[i-1] + nums[i] - nums[i-K];
max = Math.max(sums[i], max);
}
System.out.println(max);
}
누적합에 대해 공부한 후... 발전!!
최종 코드는 아래와 같다.
public class BOJ_2559 {
private static int N;
private static int K;
private static int[] nums;
private static int[] sums;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
nums = new int[N + 1];
sums = new int[N + 1];
st = new StringTokenizer(br.readLine());
for (int i = 1; i <= N; i++) {
nums[i] = Integer.parseInt(st.nextToken());
sums[i] = sums[i - 1] + nums[i];
}
int max = -10000000;
for (int i = K; i <= N; i++) {
max = Math.max(max, sums[i] - sums[i - K]);
}
System.out.println(max);
}
}
📍 누적합
누적합이란 요소들의 누적된 합의 의미로
어떠한 배열을 기반으로 앞에서 부터 요소들의 누적된 합을 저장해 새로이 배열을 만들어서 이를 활용하는 것을 말합니다.
for (int i = 1; i <= N; i++) {
nums[i] = Integer.parseInt(st.nextToken());
sums[i] = sums[i - 1] + nums[i];
}
int max = -10000000;
for (int i = K; i <= N; i++) {
max = Math.max(max, sums[i] - sums[i - K]);
}
- 누적합을 만들 때에는 1번째 요소부터 만드는 것이 좋다.
(i = i-1 이 있기 때문에 0부터 시작하면 -1이 됨) - 그 다음 sums[i] - sums[i-K] 이런식으로 빼기만 하면 A부터 B까지 구하라는 것을 쉽게 할 수 있다.
https://blog.naver.com/jhc9639/222283814653
2) 백준 1620
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
pokemons = new HashMap<>();
for (int i=1; i<N+1; i++) {
String name = br.readLine();
pokemons.put(String.valueOf(i), name);
pokemons.put(name, String.valueOf(i));
}
for (int i=0; i<M; i++) {
String tar = br.readLine();
System.out.println(pokemons.get(tar));
}
}
2. 구구의 [HTTP 활용하기] 강의를 들었다.
HTTP를 알면 웹 사이트 성능을 향상시킬 수 있다.
방법
1. HTTP 압축
2. 리소스 최적화
3. HTTP 캐싱
자세한 내용은 조만간 정리해봐야겠다!
3. (무려 2시간동안) 팀 정기회의를 진행했다.
- '사용자 유치 계획'을 정해서 제출했다.
- 이번 마일스톤에 할 일을 정했다.