본문 바로가기
알고리즘['파이썬','JavaScript']/코드트리

[코드트리 챌린지] 1차

by kk님 2023. 9. 18.

1차를 보충 출석 하려는 조건이, 실력 진단을 한번 더 봐야 하는 것인가..?

오늘 시험봤는데 그러면 시험을 또 봐야 하는 건가?... 이건 아닌 것 같아서

제공해주신 문제를 푸는 것으로 글을 작성하려고 한다.

다음 이미지는 오늘 본 실력진단 결과이다.

https://www.codetree.ai/missions/8/problems/corresponding-numbers-and-characters?&utm_source=clipboard&utm_medium=text

이번에 풀었던 문제는 HashMap을 사용해야겠다는 생각이 바로 들었던 유형이어서 금방 풀어낼 수 있었다.

 

새로 배운 내용은, [ input() for _ in range(n)] 으로 축약해서 사용할 수 있다는 점 이었다.

내 경우에는 매번 for문을 위해 2-3줄은 적었는데..

 

isalpha()로 알파벳인지 여부를 확인했지만, 숫자의 경우 한자릿수(0에서 9까지)만 포함하기 때문에 ord()를 통해 확인해도 좋을 것 같다.

 

갯수를 세는건 줄 알고 처음에는 딕셔너리에 갯수를 더해주었는데, 모든 알파벳 단어는 단 한번만 등장한다. 따라서 갯수로 보자면 딱 1만 찍히게 되는데, 문제를 잘 읽어보면 갯수가 아니라 몇번째인지 (인덱스+1)를 표기해야 한다.

딕셔너리를 두 개 사용할수도 있지만,

몇번째가 어떤 문자인지를 나타내는건 배열을 사용하는게 더 자연스러울 것 같아서 배열을 활용했다.

다만, 어떤 문자가 몇번째인지를 나타내는건 딕셔너리가 탐색 시간이 더 빠를 것이라 생각해 배열대신 딕셔너리를 활용했다.

 

import sys
n,m=map(int,sys.stdin.readline().split())
arr = []
dictionary = {}
for idx in range(n):
    x = sys.stdin.readline().rstrip()
    arr.append(x)
    dictionary[x]=idx+1
for _ in range(m):
    x = sys.stdin.readline().rstrip()
    if x.isalpha():
        print(dictionary[x])
    else:
        x = int(x)
        print(arr[x-1])

 

문제가 총 5개 주어졌는데, 문제 조건들을 살펴보니 모두 입력이 100,000 이었다. 입력이 굉장히 크다면 1번 반복만에 풀어낼 수 있도록 연습해야 할 것 같다.

같은 유형들을 묶어서 연습하게 하니까, 난이도도 크게 널뛰지 않고 해당 유형에 대해 (시간복잡도나 공간복잡도 등)을 더 신경써서 확인할 수 있었던 것 같다.

 

최근에 코딩테스트를 보면서 시간복잡도를 최대한 줄이는 연습을 많이 해야겠다고 생각해오던 참이었는데 좋은 계기가 되었다.

 

코드트리가 좋은 점은 관련 유형들을 충분히 연습할 수 있게 하는 방식인데, 굉장히 좋은 방법이라고 생각한다.

프로그래머스와 백준으로 단련해왔으니(아직도~ 초보개발자~ 이지만~) 새로운 플랫폼에서는 어떤 유형이 취약한지 막연하게 정리만 해왔던 것에 좀 더 세부적인 리포트를 받을 수 있지 않을까 하는 기대감이 있다.

 

아직 홈페이지의 전체 흐름이 어떻게 되는지 잘 모르겠다. 좀 어려운 느낌..

이번주에 만약 학습 가이드를 받게 되면 유형별로 어떻게 되어있는지 확인해볼 수 있지 않을까?

 

 

 

'알고리즘['파이썬','JavaScript'] > 코드트리' 카테고리의 다른 글

[코드트리 챌린지] 2차  (0) 2023.09.18