(TIL) 20210520

2021. 5. 21. 00:19TIL(Today I learned)

반응형

윈도우 배경화면급 올림픽 공원

1.Facts(한 것)


  • 학교 수업 듣기
  • 백준 문제 풀기

2.Findings(배운 것)


문제를 문제 그대로 보지 않는 방법을 배웠다.

문제에서는 현재 가지고 있는 카드와, 비교할 카드를 입력받게 했고

비교할 카드와 같은 카드를 몇 장 가지고 있는지 출력하게 했다.

처음에 접근할 때는 모두 배열에 할당한 다음

하나하나 비교하려고 했는데, 길이가 100000 이하라 그런지 시간 초과가 발생했다.

 

어떻게 풀어야 하나 고민하다가 그냥 배열 자체 인덱스 값을 증가시키는 방법을 선택하여 해결했다.

#include <iostream>
#define MAX 20000001

using namespace std;

int arr[MAX];
int main() {
    int n;
    int input;
    cin >> n;
    for(int i = 0;i < n; ++i) {
        scanf("%d", &input);
        arr[input+10000000]++;
    }
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%d", &input);
        printf("%d ", arr[input + 10000000]);
    }
}

위와 같은 방법을으로 문제를 해결하면 O(n) 시간 복잡도로 해결 가능해서 시간 초과와 문제 해결

두 마리 토끼를 동시에 잡을 수 있다.

 

3.Feeling(느낀 점)


 

위 문제를 파이썬과 c++로 동시에 풀어보니 

허무하리만큼 파이썬으로 짠 코드가 단순했다.

그럼에도 c++을 계속 사용하는 것은...

뭐랄까 고통 주도 학습에 중독된 것은 아닌가 생각했다.

 

 

4.Affirmation(자기 선언)


  • 나는 매일 발전하고 있다.
반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20210523  (0) 2021.05.23
(TIL) 20210521  (0) 2021.05.21
(TIL) 20210519  (0) 2021.05.20
(TIL) 20210518  (0) 2021.05.18
(TIL) 20210517  (0) 2021.05.17