오늘도 기록하러왔다. 오늘도 여러 문제를 풀었지만 5문제만 기록해봐야겠다.
1.비밀지도
https://school.programmers.co.kr/learn/courses/30/lessons/17681
이 문제는 2018년도 카카오 채용 때 문제라고 한다. 문제는 두 개의 배열을 합쳐서 하나의 지도로 표현해야한다. 문제 해결 과정은 두 지도를 각각 이진수로 변환한다.두 지도를 합친다.합친 지도를 출력 포맷에 맞게 공백과 벽으로 치환한다.
def solution(n, arr1, arr2):
answer = []
for i in range(n):
answer.append(bin(arr1[i] | arr2[i])[2:].zfill(n)) # 두 지도 합치기
answer[i] = answer[i].replace('0', ' ') # 0을 공백으로 치환
answer[i] = answer[i].replace('1', '#') # 1을 벽으로 치환
return answer
이 문제도 카카오! 2021 인턴십 문제다. 문자와 숫자가 섞여있을 때 문자가 가리키는 숫자로 변환해줘야한다. 딕셔너리 형태로 만들어주고 값을 바꿔줬다.
def solution(s):
dic = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
for key in dic:
s=s.replace(key,dic[key])
return int(s)
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 한다! 문자열 s, 거리 n을 입력 받아서 시저 암호로 출력해보자. 범위를 넘어가지 않게 26으로 나눌 것. 그리고 아스키 값을 더해주자.
ord: 문자 -> 아스키
chr: 아스키 -> 문자
def solution(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i] = chr((ord(s[i])-ord('A')+ n) % 26 + ord('A'))
elif s[i].islower():
s[i] = chr((ord(s[i])-ord('a')+ n) % 26 + ord('a'))
return "".join(s)
문자열을 입력 받고 공백을 제외한 짝수번째 알파벳은 대문자, 홀수번째 알파벳은 소문자로 표시해보자.
def solution(s):
answer = []
word=s.split(" ")
for i in word:
part=[]
for j in range(0,len(i)):
if j%2==0:
part.append(i[j].upper())
else:
part.append(i[j].lower())
part="".join(part)
answer.append(part)
answer=" ".join(answer)
print(answer)
return answer
3진번 변환 후 다시 10진법으로 표현
def solution(n):
answer = ''
while n > 0:
n, re = divmod(n,3) # n을 3으로 나눈 몫과 나머지
answer += str(re)
return int(answer, 3)