Ch4. 구현 - 게임 개발
·
코딩 테스트/이취코테
[ 게임 개발 ] -------------------------- [ 접근 방법 ] 말 그대로 문제에 주어진 대로 구현을 하면 된다고 생각하였습니다. 첫번째 입력으로 맵의 크기를 주므로 이를 for 문을 돌려 2차원 리스트로 맵을 만들면 된다고 생각했고 해당 맵을 만든 후 조건 대로 그 캐릭터가 움직이게 구현하면 되겠다 생각했습니다. 챕터가 구현 챕터인 만큼 조건을 잘 실수없이 잘 구현하는게 중요 포인트라 생각이 들었습니다. 살짝 고려해야할 것은 리스트를 2개 만들어서 방문한 곳인지 체크할 것인지, 아니면 동일 리스트안에 마킹을 하도록 추가 변수를 넣어줄것인지 고민했으나 그냥 구현을 보다 쉽게하고자 ( 구현은 쉽되, 공간복잡도는 고려 적게하는 방향성. 즉 메모리 제한이 있을 경우 1개의 리스트를 쓰는것이..
Ch4. 구현 - 왕실의 나이트
·
코딩 테스트/이취코테
[ 왕실의 나이트 ] -------------------- [ 접근 방법 ] 체스판이 8x8로 고정되어 있으므로 8x8 리스트를 선언하고, 입력으로 특정 위치를 받으면 움직일 수 있는 8가지 가능수에대해 일일이 하나씩 이동해봄으로 리스트 범위 안에 있는지 카운트하면 될 것 같습니다. 단 여기서 입력위치를 알파벳과 1부터시작하는 정수로 받으므로 이를 리스트에 맞게 변환하는 과정이 필요하리라 생각합니다. ------------------ [ 작성 코드 ] s = input() x = int(s[1]) - 1 y = ord(s[0]) - ord('a') dx = [2 , 2, -2, -2, 1, 1, -1, -1] dy = [1 ,-1, 1, -1, 2, -2, 2, -2] count = 0 for i in ..
Ch3. 그리디 - 1이 될 때까지
·
코딩 테스트/이취코테
[ 1이 될 때까지 ] ----------------------- [ 접근 방법 ] 문제 조건을 보면 K로 나누거나 1을 뺍니다. 이는 직관적으로 보았을때 1초과의 수가 K로 주어졌을때 무조건 가능하다면 K로 나누는것이 가장 적은 횟수를 수행하게 될것입니다. -------------------------- [ 작성 코드 ] n, k = map(int,input().split()) count = 0 while n != 1 : if n % k == 0 : # 나누기 가능 n //= k else: n -= 1 count += 1 print(count) 생각을 해보니 k가 1일경우를 예외처리해야했나 생각했지만, 문제 조건에서 주어진 2
Ch3. 그리디 - 숫자 카드 게임
·
코딩 테스트/이취코테
[ 숫자 카드 게임 ] --------------------------------------------- [ 접근 방법 ] 각 행과 열을 입력받은 후 한 줄씩 행이 들어옵니다. 빈 리스트를 하나 생성하여서 각각의 행이 입력 받을때마다. 그 행의 최소값을 찾아내어서 리스트에 저장을 하도록 구현합니다. 그러면 최종적으로는 그 리스트에는 각 행의 최소값들이 저장이 되어있게되고 그 리스트에서의 최대값이 문제에서 원하는 정답이 될 것 입니다. ------------- [ 작성 코드 ] n, m = map(int,input().split()) lows = [] for _ in range(n): inputnums = list(map(int,input().split())) inputnums = min(inputnums..
Ch3. 그리디 - 큰 수의 법칙
·
코딩 테스트/이취코테
[ 큰 수의 법칙 ] 동빈이의 큰수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰수를 만드는 방법이다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때, M이 8이고 K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 예를 들어 순서대로 3, 4, 3, 4, 3으로 이루어진 배열이 있을 때 M이 7이고 K가 2라고..
[보이저엑스 - 인공지능] Gradient Descent란?
·
공부 정리/면접 준비
Gradient Descent는 우리나라 말로 이야기하면 경사 하강법이라고 칭합니다. 인공지능의 신경망은 학습을 진행하며 각 사이의 가중치를 조정하여 정답값과 예측값과의 차이를 최소화해 나갑니다. 이때, 정답값과 예측값의 차이를 Cost라합니다. 이 Cost(손실)를 최소화하는것을 찾는 방법, 즉 가중치를 조정하는 방법을 옵티마이저라고 하는데 경사하강법은 이 옵티마이저에 속합니다. 특정 함수가 있을때 특정 지점에서 미분한 값, 즉 기울기를 더하면 값이 올라가게 되고 기울기를 빼면 값이 감소하는 성질를 사용하여, 기울기를 빼줌으로써 손실의 최소값에 도달하도록 하는방식이 경사하강법 입니다. 단, 학습할때 경사의 정도(기울기의 정도)가 어느정도인지 모르므로 과하게 손실그래프의 기울기가 크다면 기울기를 뺄때 계..
4.2. Sequential Models - Transformer
·
공부 정리 ( 강의 )/딥러닝 기초 다지기
강의 소개 이번 강의에서는 지난 강의에서 배운 Sequential model의 한계점과 이를 해결 하기 위해 등장한 Transformer에 대해 배웁니다. Transformer는 Encoder와 Decoder로 구성되어있지만 강의에서는 Encoder와 Multi Head Attention 에 대해 좀 더 집중적으로 배웁니다. * 강의에서 Multi-head attention과 Multi-headed attention 은 동일한 의미입니다!  ######### 본 강의 사이트에는 강의를 듣기에 앞서 어렵다고 경고가 적혀있다. 조금 긴장되지만 주된 자연어 처리의 모델인 만큼 한번 빡세게 보도록 하겠다!! ######### Transformer는 이전 강의에서 배운 RNN 과 다른 개념의 방법론입니다. 왜 등..
4.1. Sequential Models - RNN
·
공부 정리 ( 강의 )/딥러닝 기초 다지기
> Sequential Models 시퀀셜 모델을 처리하는데 있어 가장 어려운 점? 우리가 얻고싶은건 하나의 라벨인 경우가 많음. 내가 하는 말이 무엇이다. 라는걸 라벨하려는건데. 그러나 Sequential Models은 정의상 데이터의 길이가 언제 끝날지 모름. 그래서 받아 들여야할 입력의 차원의 수를 알수가 없음. → 즉 몇개의 입력이 들어오든 동작할 수 있어야함. 기본적 시퀀설 모델은 입력이 여러개 들어왔을때 다음번 들어올 입력을 예측하는것. 과거에 들어왔던 입력을 고려할게 서서히 늘어남. - 과거에 몇개의 입력만 보는거 = Fix the past timespan 가장 쉬운 모델이 Markov model (first-order autoregressive model) 가장 큰 특징 : 내가 가정을 하..
포카칩인심
포카의 IT 블로그