programing/Algorithm
-
[Programmers] 신규 아이디 추천programing/Algorithm 2021. 2. 11. 20:23
신규 아이디 추천 2021 KAKAO BLIND RECRUITMENT level 1 python3 import re def solution(new_id): new_id = new_id.lower() new_id = re.sub(r'[^a-z\d\-_\.]', '', new_id) new_id = re.sub(r'\.+', '.', new_id) new_id = re.sub(r'^\.|\.$', '', new_id) if(new_id == ''): new_id = 'a' if(len(new_id) >= 16): new_id = new_id[:15] new_id = re.sub(r'\.$', '', new_id) if(len(new_id)
-
[Programmers] 자연수 뒤집어 배열로 만들기programing/Algorithm 2021. 2. 11. 19:54
자연수 뒤집어 배열로 만들기 연습문제 level 1 python3 def solution(n): arr = [] def get_digit(number): if number < 10: arr.append(number) else: arr.append(number % 10) get_digit(number // 10) get_digit(n) return arr 자릿수 더하기 문제와 유사하게, 재귀함수 혹은 문자열을 이용할 수 있다. def solution(n): return list(map(int, reversed(str(n))))
-
[Programmers] 자릿수 더하기programing/Algorithm 2021. 2. 11. 19:26
자릿수 더하기 연습문제 level 1 python3 def solution(n): # _sum = 0 # base = 10 # while (n % (base * 10)) != 0: # _sum += (n % base) // (base // 10) # base *= 10 # print(n % base, _sum) _sum = 0 _str = str(n) for c in _str: _sum += int(c, 10) return _sum 반복문으로 풀려고 애쓰다가, 문자열로 바꿔서 풀었다.. ㅋㅋㅋ 진짜 다시 열심히 해야 되겠다는 생각이 들었다. def solution(n): return sum(map(int,str(number))) 더 최적화 한다면 위와 같이 구현할 수 있다. def solution(num..
-
[Programmers] 이상한 문자 만들기programing/Algorithm 2021. 2. 11. 18:08
이상한 문자 만들기 연습문제 level 1 python3 def solution(s): splitted = s.split(" ") result = [] for word in splitted: weired = [c.lower() if i % 2 else c.upper() for i, c in enumerate(word)] result.append(''.join(weired)) return ' '.join(result) 평소 JS에서 함수형 프로그래밍(혹은 이터러블 프로그래밍)을 자주 하는 편인데, 파이썬은 JS의 함수표현식처럼 편하게 함수를 정의하는 게 불편해서 좀 별로다. 람다를 쓰면 된다지만 되게 제한적이라고 생각한다. 물론 파알못이라 그런 것도 있겠지만.. 여튼 JS의 forEach와 유사하게 써먹을..
-
[Programmers] 시저 암호programing/Algorithm 2021. 1. 10. 22:07
시저 암호 연습 문제 level 1 python3 def solution(s, n): largeAsciiRange = (65, 90) smallAsciiRange = (97, 122) asciiList = [] for c in s: if c == ' ': asciiList.append(c) continue asciiNum = ord(c) shiftedAsciiNum = asciiNum + n if c.isupper() and shiftedAsciiNum > largeAsciiRange[1]: gap = shiftedAsciiNum - largeAsciiRange[1] shiftedAsciiNum = largeAsciiRange[0] + gap - 1 elif c.islower() and shiftedAs..
-
[Programmers] 내적programing/Algorithm 2021. 1. 10. 18:55
내적 월간 코드 챌린지 1 level 1 python3 def solution(a, b): answer = 0 for i in range(len(a)): answer += a[i]*b[i] return answer 처음에는 [x * y for x in a for y in b]로 해봤으나, 내적이 아니라 약간 이중 for문 처럼 나와버려서 당황.. 사실 순열을 array comprehension으로 가능하다는 어마어마한 유틸성에 놀랐다... def solution(a, b): return sum([x*y for x, y in zip(a,b)]) zip 함수를 이용해서 a배열과 b배열의 각 원소를 튜플로 만든 후, 해당 튜플에 대해서 곱 연산을 한 뒤 sum 을 해주는 것도 가능하다.