개발새발 103

현대엔지비 최종면접 후기(feat.코딩테스트, 1차면접)

일단 결과는 불합격... 알고리즘을 즐겨푸는 사람으로서 Softeer 서비스 개발에서 일하면 많은 경험을 해볼 수 있을 것 같은데 참 아쉽다. 최종면접 전까지는 전형 합격소식과 면접일정에 대한 안내를 인사담당자님께서 직접 메일과 전화로 주셔서 참 감사했다. (다른 기업들은 알아서 확인하라는 경우가 많아서 이 부분에서 약간 감동,,) 지원한 계기는 현대엔지비 인재 pool에 인적사항 등록을 해두었더니 전형에 참여할 것인지 연락이 왔었다. 채용공고 확인해보니 Softeer 서비스 Back-end 개발자를 뽑는 것 같아서 일단 지원했다. 내 스펙은 Front-end에 비중이 높아서 사실 큰 기대는 안했다. 테스트부터 최종 면접까지 일정이 빠르게 진행되어서 한 달을 정신없이 보냈다. 코딩테스트 일단 코딩테스트는..

이모저모/취준 2023.04.20

[MYSQL] 날짜, 시간 형식 지정 / 계산하기

GOAL : 다양한 함수를 통해 MYSQL에서 날짜와 시간을 다룬다. 날짜, 시간 형식 지정 및 게산 형식, 포맷 지정하기 DATE_FORMAT 함수 DATE_FORMAT(date, type) ex) date = '2023-02-13 11:30:14' type = '%Y/%m/%d' # '2023/02/13' date : 형식을 갖춘 날짜 및 시각 type : 반환받을 형식 자주 사용하는 형식 입력된 날짜의 형식을 'yy-mm-dd'와 같이 바꿉니다. '2023-02-13 13:54:22' 같은 형식을 '2023-02-13'로 바꿀 때 사용합니다. 다양한 Format Description 확인 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-function..

[Python] 소수 판별, 소수 리스트 구하기 (feat.에라토스테네스의 체)

에라토스테네스의 체 수학에서 소수를 찾는 방법론 중 하나입니다. 알고리즘 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 자기 자신을 제외한 2의 배수를 모두 지운다. 제외되지 않은 3은 소수이다. 자기 자신을 제외한 3의 배수를 모두 지운다. 제외되지 않은 5는 소수이다. 자기 자신을 제외한 5의 배수를 모두 지운다. 제외되지 않은 7은 소수이다. 자기 자신을 제외한 7의 배수를 모두 지운다. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다. 만약 120까지 수 중에서 소수를 구하고 싶다면, 11^2 > 120 이므로 11보다 작은 수들의 배수들만 지워도 소수를 구할 수 있습니다. Python 코드 소수 리스트 구하기 에라토스테네스의 체를 이용하여 120이하의 소수 리스트를 구해보겠습니..

Algorithm/Algorithm 2023.02.03

[Python] 유클리드 호제법 (최대공약수 구하기)

유클리드 호제법 (Euclidean algorithm) 은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘 중 하나입니다. 최대공약수 (Greatest Common Divisor) : 두 개 이상의 정수의 공통 약수 중에서 가장 큰 값을 의미합니다. 공식 만약 i > j 일 경우, i % j == 0이면 i와 j의 최대공약수는 j이다. 그렇지 않다면, i와 j의 최대 공약수는 j와 i % j의 최대공약수와 같다. (i % j != 0) 예를 들어, 10과 5의 최대공약수: 10%5 = 0 이므로 5가 최대공약수입니다. 10과 8의 최대공약수: 10%8 = 2 이며, 8 % 2 = 0 이므로 2가 최대공약수 입니다. 더 큰 수인 832와 1088의 경우에도 - 1088 % 832 = 256 - 89..

Algorithm/Algorithm 2023.01.30

[Python] 10진수, 2진수 변환 (파이썬 내장 함수 활용)

파이썬에서 10진수 2진수 다루기 파이썬에서 제공하는 함수를 활용하면 쉽게 변환이 가능합니다. 10진수에서 2진수로 변환 bin() 사용 v = 10 bin(10) # '0b1010' bin()을 활용하여 10진수를 2진수로 변환할 수 있습니다. 변환된 값은 문자열로 반환됩니다. 2진수 변환의 경우 앞에 '0b'가 붙습니다. format() 사용 v = 10 format(v, '#b') # '0b1010' format(v, 'b') # '1010' '{0:#b}'.format(10) # '0b1010' '{0:b}'.format(10) # '1010' format()을 활용하여 10진수를 2진수로 변환할 수 있습니다. 변환된 2진수는 문자열입니다. 2번째 인자에 '#'을 포함하지 않으면 접두어를 제거할 ..

개발일기/Python 2023.01.30

[Python] 자주 사용하는 라이브러리 정리 #1

라이브러리 최근 코딩테스트를 보면서 라이브러리가 기억이 안나서 고생한 적이 있어서 코테 전에 보고 갈 내용을 포스팅을 하려합니다. 지극히 개인적으로 자주 사용하는 라이브러리만 정리하니 참고바랍니다. 표준입출력 import sys input = sys.stdin.readline 순열과 조합 # 순열 from itertools import permutations print(list(permutations([1,2,3,4], 2))) # [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] # 조합 from itertools import combinations print(list(combin..

개발일기/Python 2023.01.19

최소 스패닝 트리(MST, Minimum Spanning Tree), Kruskal & Prim 알고리즘

Spanning Tree 스패닝 트리란 그래프 내 모든 정점을 포함하는 트리입니다. 또한, 사이클을 포함하면 안된다는 특징이 있습니다. MST(Minimum Spanning Tree) 최소 스패닝 트리(최소 신장 트리)는 스패닝 트리 중 사용된 간선의 가중치가 최소인 트리를 뜻합니다. MST 특징 N개의 정점에 대해 N-1개의 간선이 존재합니다. 스패닝 트리이므로 사이클을 포함해서는 안됩니다. 간선 가중치의 합이 최소여야합니다. MST 구현 방법 1. Kruskal 알고리즘 Greedy method를 활용하여 구현합니다. 간선을 가중치 기준으로 오름차순 정렬합니다. 사이클을 포함하지 않는 경우 MST 구성 간선으로 포함시킵니다. N개의 정점에 대해 N-1개의 간선을 포함시킬 때까지 반복합니다. 💻 Kru..

Algorithm/Algorithm 2023.01.12

[Git] 깃랩(Gitlab)에서 깃헙(Github)으로 커밋 옮기기 (Repository 이동) + 커밋 기록 삭제하기

프로젝트를 깃랩에서 진행하여 깃헙 잔디가 많이 죽어있었습니다... 잔디를 되살리기 위해서 깃랩에 있는 커밋 기록을 깃헙으로 옮기는 방법을 알아봤습니다. 깃랩에서 깃헙으로 레포지토리 이동하기 $ git clone --bare {깃랩주소} git bash에서 해당 명령어로 옮기려는 커밋 기록이 있는 깃랩 주소를 불러옵니다. $ cd {레포지토리명}.git $ git push --mirror {깃헙주소} 로컬로 불러온 레포지토리에 들어가서 옮기고 싶은 깃헙에 push합니다. 이렇게 하면 웬만한 레포지토리는 이동이 가능합니다. 다만, 제가 진행했던 프로젝트 중에 data.json파일의 크기가 깃헙 용량 제한인 100MB를 넘어가는 경우가 있어 이 방법으로 옮겨지지 않았던 경우가 있었습니다. 일단 파일을 삭제하고..

개발일기/Git 2022.11.22

[React-Native] AsyncStorage를 활용하여 token 저장하기

웹에서 개발할 당시에는 세션 또는 로컬에 토큰을 저장하여 로그인 상태를 유지하게 했습니다. 하지만 앱에서는 세션과 로컬을 활용할 수 없기 때문에 AstncStorage를 활용하여 디바이스에 정보를 저장하여야 합니다. AsyncStorage 설치 $ npm install @react-native-community/async-storage AsyncStorage에 데이터 저장하기 // Token.js import AsyncStorage from '@react-native-async-storage/async-storage'; // AccessToken 저장 export const setAccessToken = async token => { await AsyncStorage.setItem('accessToken..

개발일기/App 2022.11.20