Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 개인회고
- 백준
- 알고리즘스터디
- 알고리즘_스터디
- 그래프이론
- 백트랙킹
- 정렬
- 이코테
- python3
- 그리디
- 프로그래머스
- Level2
- 구현
- 기술면접
- 글또
- mrc
- Level1
- U_stage
- 이진탐색
- ODQA
- 부스트캠프_AITech3기
- 주간회고
- 최단경로
- Level2_PStage
- dp
- 파이썬 3
- 다시보기
- 부스트캠프_AITech_3기
- 단계별문제풀이
- dfs
Archives
- Today
- Total
국문과 유목민
37. 비밀지도 찾기 본문
0. 문제
링크) https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
1. 알고리즘 계획
- 정수값을 이진수로 가공한다.
- for문을 돌면서 규칙에 해당하는 값으로 새로운 리스트르 만든다.
- 다른 for문에서 새로운 리스트를 돌면서 값을 변화시켜준다.
2. 나의 코드
def solution(n, arr1, arr2):
ls2 = []
answer = []
# 정수 가공
tmp1 = ['0'*(n-len(format(i,'b')))+format(i,'b') if len(format(i,'b')) != n else format(i, 'b') for i in arr1]
tmp2 = ['0'*(n-len(format(i,'b')))+format(i,'b') if len(format(i,'b')) != n else format(i, 'b') for i in arr2]
# for문
for x, y in zip(tmp1, tmp2):
ls = ['0' if (int(x[i])+int(y[i])) == 0 else '1' for i in range(len(tmp1))]
ls2.append(ls)
for v in ls2:
ls3 = ['#' if v[i] == '1' else ' ' for i in range(len(v))]
answer.append("".join(ls3))
return answer
- foramt(정수, 'b')를 하면 정수가 이진수로 바뀐다고 한다.
- 이전의 코드에서 배운 zip함수를 사용해 두 리스트를 한 개의 for문에서 돌려봤다.
3. 다른 사람의 코드
def solution2(n, arr1, arr2):
answer = []
for i, j in zip(arr1, arr2):
a12 = str(bin(i | j)[2:])
print(a12)
a12 = a12.rjust(n, '0')
a12 = a12.replace('1', '#')
a12 = a12.replace('0', ' ')
answer.append(a12)
return answer
- 굉장히 간단하게 문제를 해결했다.
- str(bin(arr1[i]|arr2[i]))[2:] #핵심코드라고 생각한다.
└ bin()함수를 사용하게 되면 앞에 두 단어 '0b'가 붙는다.
- rjust(길이, '값'): str값이 주어진 '길이'에 부족하면 '값' 을 앞에다가 채워준다.
└ 정수 '1'의 경우 이진수도 '1'이기 때문에 앞에 '0'을 채워줘야 한다.
- replace(): 해당 값을 다른 값으로 변경
4. 정리 및 리뷰
- 확실히 코드를 간략화해보고, 다양한 함수를 사용해본 사람은 코드의 길이와 속도의 차이가 확실히 난다고 생각한다.
- 다양한 함수들에 대해 이해하고 외워둬야겠다.
- 그래도 아예 코딩테스트를 하기 전에는 엄두도 내지 못했을 문제였다고 생각하니, 많이 성장했다는 생각이 들었다.
코드 만족도: ★★★★☆
'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글
39. 다트확률 구하기 (0) | 2020.09.12 |
---|---|
38. 실패율 (0) | 2020.09.12 |
36. 예산 (0) | 2020.09.12 |
35. 별 찍기 (0) | 2020.09.12 |
34. X만큼 간격이 있는 n개의 숫자 (0) | 2020.09.12 |