본문 바로가기

All91

[파이썬] 시저 암호 [CODING TEST #35] https://school.programmers.co.kr/learn/courses/30/lessons/12926 리스트를 쓰지 않고, 아스키 코드를 이용해서 풀어 보았다. chr(ascii) : ascii에 대응하는 alpha를 문자열로 반환 ord(alpha) : alpha에 대응하는 아스키 코드를 문자열로 반환 아스키 코드는 소문자 a~z, 그리고 대문자 A~Z까지 순서대로 배치되어 있으니 케이스를 나누어 'A'와 Alpha까지의 차이에다가 n을 더한 만큼 아스키 코드로 'A'로부터 이동한 뒤, 문자로 반환시킨다. 공백은 공백으로 나와야 하는데, 공백에 대응하는 아스키 코드가 존재하므로 코드에 공백인 경우는 pass하도록 구현해야 한다. def solution(s, n): answer = '' fo.. 2022. 8. 2.
[파이썬] 3진법 뒤집기 - 월간 코드 챌린지 시즌1 [CODING TEST #34] https://school.programmers.co.kr/learn/courses/30/lessons/68935 3진수로 바꿨을 때 최대 자릿수를 계산한 뒤, 3진수로 바꾼다. 문자열 역순 슬라이싱[::-1]으로 뒤집고, int(string, 3) 함수로 10진수로 바꾼다. def solution(n): answer = 0 new_n = '' s=0 # 3진법 자릿수 구하기. 등호 포함 while n >= 3**(s+1): s += 1 # 윗자리부터 0,1,2 채우기 while n != 0: new_n += str(n//(3**s)) n -= (n//(3**s))*(3**s) s -= 1 # 역순 슬라이싱 new_n = new_n[::-1] # STRING 형의 n진수를 10진수로 : int(STRIN.. 2022. 8. 2.
[파이썬] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) [CODING TEST #33] https://school.programmers.co.kr/learn/courses/30/lessons/77484#fnref1 def solution(lottos, win_nums): answer = [] right = 0 erased = 0 for lotto in lottos: if lotto in win_nums: right += 1 elif lotto == 0: erased += 1 # 최고 순위 if right + erased == 6: answer.append(1) elif right + erased == 5: answer.append(2) elif right + erased == 4: answer.append(3) elif right + erased == 3: answer.append(4) e.. 2022. 8. 2.
[파이썬] 불량 사용자 - 2019 카카오 개발자 겨울 인턴십 [CODING TEST #32] https://school.programmers.co.kr/learn/courses/30/lessons/64064 순열을 이용하여 banned_id의 길이에 맞춰 user_id로부터 모든 순열 조합을 뽑아낸다. 그리고 조합 속 이름을 순서에 따라 조건을 따지면 된다. 순열로 뽑은 튜플 "user"와 banned_id가 같은 경우의 수인지 따지는 함수 ox()를 새로 정의했다. from itertools import permutations def same(user, banned_id): for word in range(len(user)): if len(user[word]) != len(banned_id[word]): #1. 길이 check return False for alpha in range(len(b.. 2022. 8. 1.
[파이썬] 행렬의 곱셈 [CODING TEST #31] https://school.programmers.co.kr/learn/courses/30/lessons/12949 두 행렬의 곱은 조건이 한정적이어서 간단하게 구현이 가능하다. 곱의 결과는 [arr1의 row x arr2의 column] 형태를 띠며, arr1의 column과 arr2의 row가 같아야 한다. def solution(arr1, arr2): arr1_row, mid, arr2_col = len(arr1), len(arr2), len(arr2[0]) answer = [[0 for _ in range(arr2_col)] for _ in range(arr1_row) ] for i in range(arr1_row): for j in range(arr2_col): for m in range(mid).. 2022. 8. 1.
RNN [Deep Learning Specialization #12] Coursera의 Deep Learning Specialization - Week 5의 강의를 수강하면서 필기한 내용을 바탕으로 정리한 글입니다. 5주차는 시퀀스 모델에 대해 배웁니다. Sequence Model 시퀀스 모델이란, 입력 데이터가 순서를 가지고 있는 것을 말합니다. 음성 오디오의 경우가 대표적입니다. 시퀀스 모델의 입력 X는 하나의 원소가 하나의 단어를 의미합니다. i번째 예제에서 t번째 원소를 표현할 때 X(i)처럼 표기합니다. 출력 Y는 입력 X가 의미하는 단어를 라벨링한 값이 됩니다. 시퀀스 길이는 Tx, Ty로 표기하고 본 예시의 경우, Tx와 Ty는 X의 길이인 9와 같습니다. 그렇다면 X은 실제 모델에서 어떤 형태로 입력될까요? 사용자는 자신들의 단어 사전 Vocab을 미리 만들.. 2022. 8. 1.
[파이썬] 이진 변환 반복하기 - 월간 코드 챌린지 시즌1 [CODING TEST #30] https://school.programmers.co.kr/learn/courses/30/lessons/70129 이진법 문제는 아니었고, bin() 함수와 조건만 잘 구현하면 쉽게 풀 수 있었다. def solution(s): answer = [] # s -> 1이 될 때까지 이진 변환 횟수와 지워진 0의 개수 return total_zeros = 0 bin_count = 0 while True: bin_count += 1 # 이진 변환 횟수 zero_count = 0 # s 내 0 개수 세기 for i in range(len(s)): if s[i] == '0' : zero_count += 1 total_zeros += zero_count if len(s) - zero_count == 1: # s = .. 2022. 7. 31.
[파이썬] 주차 요금 계산 - 2022 KAKAO BLIND RECRUITMENT [CODING TEST #29] https://school.programmers.co.kr/learn/courses/30/lessons/92341 아이디어는 어렵지 않았으나, 처음에 차 번호를 int형으로 바꾸어야 하는 줄 알고 차 번호를 key로 가지는 딕셔너리를 다룰 때 int로 바꿨다가, 계속 에러가 어디서 나는 지 몰라서 개고생을 해 버렸다. from collections import defaultdict import math def solution(fees, records): car = list(set(map(lambda x: x.split(' ')[1],records))) car_in = defaultdict() total_fee = {k:0 for k in car} for record in records: car = rec.. 2022. 7. 31.
[파이썬] 2개 이하로 다른 비트 - 월간 코드 챌린지 시즌2 [CODING TEST #28] https://school.programmers.co.kr/learn/courses/30/lessons/77885 이 문제를 풀기 위해 전날 자기 전에 비트 연산자에 대해 정리를 했는데.. 짝수면 1을 더하고, 홀수의 경우 오른쪽에서 가장 가까운 0을 찾고, 그 뒤의 1을 0으로 만드는 아이디어는 떠올렸는데, 가장 가까운 0을 찾는 과정에서 뭔가 이상한지 계속 에러가 났다. 하나쯤은 pass할 법도 한데.. def f(x): if x%2 == 0 or x == 1: # 짝수 return x + 1 else : # 홀수 k = 0 while x >= (1 1) def solution(numbers): answer = [] for number in numbers: answer.append(f(number)).. 2022. 7. 30.
728x90