본문 바로가기

Every

(139)
Programmers Lv.1 "이상한 문자 만들기" 주어진 문자열을 공백 기준으로 각각의 원소로 생각하고, 각 원소들에 대하여 index의 홀짝 여부를 판단하여 요소들을 알맞게 리턴해주면 된다. 음.. 뭔가 말이 이상한것 같은데 코드를 보면 바로 이해할 수 있을 것이다. 반환할 때 요구하는 형태와 맞는지 꼭 체크하자! def solution(s): answer = "" target = s.split(" ") for elem in target: for idx, char in enumerate(elem): if idx%2==0: answer += char.upper() else: answer += char.lower() answer += " " return answer[:-1]
Programmers Lv. 1 "3진법 뒤집기" 가끔 나오는 '진법 변환'과 문자열 뒤집기가 응용된 문제이다. 문자열 뒤집기는 말 그대로 주어진 문자열을 역순으로 뒤집으면 되서 큰 문제가 되지 않는다. 우리가 눈여겨봐야할 것은 진법 변환에 대한 내용이다. 요것도 자세한 내용은 알고리즘 카테고리의 "진법변환"에서 다룰예정이니 참고해보라. 파이썬에는 아쉽게도 10진수 숫자를 2, 8, 16진수로 표현하는 것 이외의 진법으로 표현하는것엔 달리 방법이 없다. 즉, 직접 구현해야 한다는 말이므로 원리 그대로 진행하자. import string def solution(n): def convert(num, base): tmp = string.digits + string.ascii_lowercase q, r = divmod(num, base) if q==0: ret..
Programmers Lv.1 "같은 숫자는 싫어" 주어진 배열에서 연속적으로 나타나는 숫자를 하나만 남기고 다 지우는것이 포인트이다. 위의 말과 조건을 생각해보면 한마디로 순서를 유지한 채 중복된 요소를 모두 검열하라는 것과 같은 말이다. 필자는 주어진 arr의 첫번째 요소를 tmp에 담고, arr를 순회하면서 중복된 요소가 아닌것들만 tmp에 차례대로 append한 뒤 tmp를 반환해주었다. def solution(arr): tmp = [arr[0]] for i in range(1,len(arr)): if arr[i]!=arr[i-1]: tmp.append(arr[i]) return tmp
NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (9) 본격적으로 NLP의 길로 들어서보자~~ 오늘 정리할 내용은 바로 "워드 임베딩"! 하.지.만 그 전에, 5번째 NLP Load에서 다룬 벡터화에 대해 간략하게 복습을 해보자. 레츠기릿~ Ⅰ. 벡터화(Vectorization) 앞서 정리한 것처럼 벡터화는 크게 3가지 종류로 나눌 수 있다. 1. 벡터화에 신경망을 사용하지 않을 경우 단어에 대한 벡터화 : OHE(One-Hot Encoding) 문서에 대한 벡터화 : DTM(Document-Term Matrix), TF-IDF 2. 벡터화에 신경망을 사용하는 경우 단어에 대한 벡터화 : Word Embedding (Word2Vec, GloVe, FastText, Embedding Layer) 문서에 대한 벡터화 : Doc2Vec, Sent2Vec 3. 문맥..
Programmers Lv. 1 "최대공약수와 최소공배수" 드디어 직접적인 내용이 문제로도 보인다. 이전 포스팅에서 간간히 약수, 배수와 관련된 내용을 많이 얘기했었는데 이에 대한 가장 직접적인 문제라고 생각한다. 내용은 심플하다. 말 그대로 최대공약수와 최소공배수를 구해서 하나의 리스트에 담아 리턴하면 된다. 알고리즘 카테고리의 "약수/배수와 GCD, LCM"를 참고하자. def solution(a, b): x,y = a,b z = x%y while z>0: x,y=y,z z=x%y g=y return [g, a/g*b]