최근 소프트웨어 마에스트로에 서류합격하고 코딩테스트를 준비하느라 정신이 없었다.
가끔씩 백준에 들어가서 문제를 풀긴 했었지만 지금까지는 전공과목 공부를 하고 앱만드는데만 힘을 쏟느라 제대로 알고리즘을 접해보고 공부해볼 기회가 없었다.
이번 코딩테스트를 통해 알고리즘에 대해 접하고 제대로 공부해볼 수 있어서 합불을 떠나 좋은 경험이 된 것 같다.
소프트웨어 마에스트로 가이드에 따르면 기초100제로 기본을 다지고 백준에서 단계별로 풀어보라고 해서 코드업의 기초 100제 먼저 풀어보았다.
기초 100제를 풀면서 배운점을 정리해봤다.
1. 여러개의 값을 받을 때 map 이용한다.
2. format쓸 때 {0:02d}
3. o는 8진수 x는 16진수, X는 16진수인데 대문자로 나옴
4. int()로 형변환 할 때, 2번째 인자에 넣은 수의 진수대로 저장된다. (ex. n = int(input(), 16) 로 하면 n에 input에서 받은 수가 16진수로 바꾸어 저장된다.)
5. if i in (3, 6, 9): 로 하면 i가 3또는 6또는 9가 될 때 if문에 걸린다.
6. 파이썬에서 리스트를 0초기화 하려면 data = [0]*100 이런식으로 해주면 된다.
7. Range의 역순 -> for k in range(n-1, -1, -1):의 경우 n-1에서 시작해 0까지 역순으로 k에 할당된다.
8. list의 경우 .reverse() 를 이용하면 역순으로 저장된다.
9. for k in enumerate(call):이렇게 사용하면 call이라는 리스트에서 인덱스 번호와 원소값을 tuple형태로 반환함.
10. 2차원 배열의 경우엔 table = [[0]*19 for _ in range(19)]이런식으로 초기화 해야 한다. (Table = [[0]*19 for _ in range(19)] 이런식으로 하면 안됨.(19개의 [0]*19은 모두 같은 객체로 인식되기 때문))
11. 이차원배열 입력받을 때는
data = []
for _ in range(19):
data_line = list(map(int, input().split()))
data.append(data_line)
위와 같이 하기 (꼭 data_line을 정의하지 않고 그냥 바로 data.append(list(map(int, input().split()))) 해도된다.)
12. 좌표평면이랑 헷갈리지 말자! 2차원 배열에서 table[x][y]이렇게 되어있으면 x는 세로방향으로, x의 값이 커질수록 세로 밑 방향으로 나아간다. y는 가로방향으로 y의 값이 커질수록 오른쪽으로 나아간다.(헷갈리면 table[y][x]해줘도 된다.)
기초 100제를 통해 알고리즘의 재미를 느낄 수 있었고 꾸준히 공부해봐야겠는 생각이 들었다.
지금은 백준으로 넘어와 단계별 풀어보기를 하고 있는데 브루트포스와 백트래킹을 배웠다.
다른 것들도 많이 풀어보면서 유형별로 풀이를 잘 익혀봐야겠다.
'Base > Algorithm Study' 카테고리의 다른 글
[Python/파이썬] 백준 알고리즘 10951번 - A+B - 4 (0) | 2021.08.14 |
---|---|
[Python/파이썬] 알고리즘 지엽 정리(계속 수정 및 추가) (0) | 2021.08.14 |
[Python/파이썬] 백준 알고리즘 15552번 - 빠른 A+B (0) | 2021.08.14 |
[Python/파이썬] 백준 알고리즘 2588번 - 곱셈 (2) | 2021.08.13 |
[알고리즘] 더 효율적인 Quick Sort에 대한 생각 (1) | 2021.06.11 |