Super Kawaii Cute Cat Kaoani 치킨고양이짱아 공부일지
728x90

전체 글 170

삼성 코딩테스트 벼락치기 합격 후기

삼성에 합격한 현시점에서,삼성 SW 역량 테스트라 불리는 삼성 코딩테스트를 준비하는 분들께 도움이 될만한 글을 써보려고 한다!먼저 벼락치기를 했던 내 상황을 말하자면,코테 준비 경험) 석사 졸업을 앞둔 시점에서 취준 경험이 0이라 코딩테스트를 한번도 준비해본적이 없었다. (백준조차 가입이 안되어있었다;;)언어) 연구에서 사용한 python만 익숙한 상황이였어서 python으로 코테를 쳤다.준비기간) 1달 조금 안되었던것 같다. 대학원생이였기에 1달을 온전히 집중할 수도 없었다. 하지만 임박한 2주는 매일매일 5시간 이상 준비를 하였다. (카페에서 2~3시간 + 스터디카페에서 3~4시간)준비유형) 1번, 2번 중 simulation 유형인 1번 유형만 준비를 하였다. 벼락치기이다 보니 2번 유형까지 준비하..

모델의 경량화 방법

사실 나는 아직까지 연구에서만 딥러닝을 사용하다보니 모델의 경량화 경험이 없다. 하지만 현업에서 사용하는 로봇, 자율자동차, 스마트폰과 같은 모바일 환경에서는 하드웨어 성능이 제한적인 상황이 많다. 이때문에 모델 경량화를 무조건 고려해야하니,,,,당장 쓸 일이 없더라도 개념을 알아보도록 하자 경량화 방법모델을 경량화 하는 방법은 크게 2가지로 나눌 수 있다. 1) 학습된 모델의 크기를 줄이는 방법2) 네트워크 구조 자체를 효율적으로 설계하는 방법-> 2)의 경우 모델의 구조를 단순화하거나 효율적으로 설계하여 파라미터 수와 연산량을 줄이는 방법으로 중요 아이디어는 불필요한 연산을 줄이고 중요한 피처만 효율적으로 학습할 수 있는 구조로 설계하여 모델의 크기와 계산 복잡도를 최소화하는 것이다. 여기서는 1) ..

Transformer 개념 완전 정리, 각 Attention의 차이점

최근에 면접을 보면서 모델 관련 지식들을 질문 받았었는데 완전 잘못 말했다....구조도 제대로 파악못하고 썼구나 싶어서 반성이 많이 된 경험이였다. 특히 Transformer의 경우 내가 굉장히 많이 써온 모델인데 구조를 파악 못하고 있다는게...ㅎ공부해보자...Transformer란?Transformer는 입력 시퀀스를 병렬로 처리하여 각 단어가 문맥 내 다른 단어들과의 관계를 학습하고, 이를 기반으로 출력을 생성하는 모델로, Attnetion 메커니즘을 활용해 복잡한 의존성을 효율적으로 캡처하여 다양한 시퀀스 작업에 활용되는 신경망 구조이다. Attention 메커니즘이란?Transformer를 제안한 논문의 이름이 "Attention is All you need"인 만큼 Attention에 대한 이..

[삼성 SW 역량 테스트 기출, Python] 싸움땅 풀이

2022 하반기 오전 1번 문제인 '싸움땅' 문제 풀이입니다. 1. 문제 링크https://www.codetree.ai/ko/frequent-problems/problems/battle-ground/description 삼성 코딩테스트 기출 문제 설명: 싸움땅 | 코드트리삼성전자 코딩테스트 기출 문제 싸움땅의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 2. 한줄평bfs, dfs 없는 노가다 시뮬레이션 문제! 확실히 최근 기출이 훨씬 어려운것 같다..3년전만 해도 훨씬 낫네🥲 3. 코드N, M, K = map(int, input().split())dx = [-1, 0, 1, 0]dy = [0, 1, 0, -1]board = []for i..

[삼성 SW 역량 테스트 기출, Python] 메두사와 전사들 풀이

2024 오후 하반기 1번 문제였던 '메두사와 전사들' 문제 풀이입니다. 1. 문제 링크https://www.codetree.ai/ko/frequent-problems/problems/medusa-and-warriors/description?introductionSetId=&bookmarkId= 2. 한줄평알고리즘이 어렵진 않지만 챙겨야할 디테일이 너무너무 많은 문제ㅠㅠ문제 조건에 전사가 0명 이상이라고 해서 0명일때는 전사위치 정보를 입력 안받도록 처리했었습니다..하지만 문제를 보면 '다음줄에 M명의 전사 좌표가 나온다'고 되어있으므로 전사가 0명일때도(M=0일때도) 빈 line을 입력받아야한다는것! 그래도 코테 전에 이런 디테일 때문에 틀려봤으니 실전에서는 같은 문제로 틀릴것 같진 않네요☺️ 3. 풀..

[삼성 SW 역량 테스트 기출, Python] 메이즈러너 풀이

2023 상반기 오후 1번 문제인 '메이즈러너'의 Python 풀이입니다.  1. 문제 링크https://www.codetree.ai/ko/frequent-problems/problems/maze-runner/description 삼성 코딩테스트 기출 문제 설명: 메이즈 러너 | 코드트리삼성전자 코딩테스트 기출 문제 메이즈 러너의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 2. 한줄평난이도 자체는 진짜 괜찮았는데 가장 작은 박스를 찾을 때 좀 깔쌈하게 해보려다가 엣지 케이스에 걸려서 1트에 틀린 문제..그냥 심플하게 구현하는게 젤 좋은것 같습니당😂 3. 풀이 N, M, K = map(int, input().split())board = ..

[삼성 SW 역량 테스트 기출, Python] 마법의 숲 탐색 풀이

2024 상반기 오후 1번 문제로 나왔던 '마법의 숲 탐색' 문제의 python 풀이입니다. 1. 문제 링크https://www.codetree.ai/ko/frequent-problems/problems/magical-forest-exploration/description 삼성 코딩테스트 기출 문제 설명: 마법의 숲 탐색 | 코드트리삼성전자 코딩테스트 기출 문제 마법의 숲 탐색의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 2. 한줄평시뮬레이션 문제의 경우 시간초과가 나는 경우가 거의 없었는데 시간 초과가 나서 도대체 뭐가 문제일까 고민했는데 치명적인 실수를 했더라구요..저의 경우 가장 깊은 행을 구할 때 dfs를 사용했는데 1->2->3..

[삼성 SW 역량 테스트 기출, Python] 포탑 부수기 풀이

2023 상반기 오전 1번 문제로 나왔던 '포탑 부수기' 문제의 python 풀이입니다. 1. 문제 링크https://www.codetree.ai/ko/frequent-problems/problems/destroy-the-turret/description 삼성 코딩테스트 기출 문제 설명: 포탑 부수기 | 코드트리삼성전자 코딩테스트 기출 문제 포탑 부수기의 상세 설명입니다. 문제 요구사항을 정확히 파악하고 효율적인 알고리즘을 설계해보세요.www.codetree.ai 2. 한줄평문제 자체는 어렵지 않았습니다. simulation + bfs로 최단 경로 찾는 문제입니다. 찾는거에서 영역 밖을 통해 이동할 수 있는게 좀 새롭긴 했지만 구현자체는 쉬웠습니다. 다만 역시나 그렇듯 조건이 너무 많아서 놓치기가 쉬워요..

[Python 코테준비] 달팽이 배열(토네이도 배열)

2차원 배열에서 시작 지점을 기준으로 나선형으로 값에 접근하는 코드이다. 코드를 외운다기보단 한번 구현해본 경험이 있으면 문제에서 토네이도 모양으로 element에 접근해야할 때 좀 더 망설임 없이 코드를 짤 수 있을 것 같아 정리해보았다.안에서 밖으로 나갈수도 있고, 밖에서 안으로 들어올수도 있다.  1. 안에서 밖으로def tornado_in_to_out(array): current_x = len(array)//2 current_y = len(array)//2 dx = [0, 1, 0, -1] dy = [-1, 0, 1, 0] dir_idx = 0 current_count = 0 length = 1 answer_list = [] answer_li..

[Python 코테준비] itertools 안쓰고 리스트 회전하기

다른 라이브러리 없이 리스트를 회전하는 방법이다. 외워두면 편하게 사용할 수 있다.# 시계방향 90도 회전def rotate_array_90(array): rotated_array = [] for row in zip(*array[::-1]): rotated_array.append(list(row)) return rotated_array# 시계방향 180도 회전def rotate_array_180(array): rotated_array = [] for row in array[::-1]: rotated_array.append(row[::-1]) return rotated_array# 시계방향 270도 회전def rotate_array_270(array..

728x90
728x90