37. 비밀지도 찾기

2020. 9. 12. 23:28·알고리즘_코딩테스트/프로그래머스_Level1

0. 문제

링크) https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr


1. 알고리즘 계획

  1. 정수값을 이진수로 가공한다.
  2. for문을 돌면서 규칙에 해당하는 값으로 새로운 리스트르 만든다.
  3. 다른 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. 실패율  (1) 2020.09.12
36. 예산  (0) 2020.09.12
35. 별 찍기  (0) 2020.09.12
34. X만큼 간격이 있는 n개의 숫자  (2) 2020.09.12
'알고리즘_코딩테스트/프로그래머스_Level1' 카테고리의 다른 글
  • 39. 다트확률 구하기
  • 38. 실패율
  • 36. 예산
  • 35. 별 찍기
논곰
논곰
현재 2년 유목하고, 3년 이상 리테일 쪽에서 머신러닝 엔지니어로 잠시 정착 중인 AI 엔지니어입니다.
  • 논곰
    에이아이 유목민
    논곰
  • 전체
    오늘
    어제
    • 분류 전체보기 (200)
      • 기술 견문록 (22)
        • MLOps (8)
        • ProductServing (5)
        • 협업 툴 (3)
        • Error Collecting (2)
        • 컨퍼런스 (1)
        • 자격증 (1)
      • IT 견문록 (10)
        • 추가 학습 정리 (10)
      • 알고리즘_코딩테스트 (162)
        • 프로그래머스_Level1 (40)
        • 백준코딩테스트_단계별문제풀이 (14)
        • 이것이 코딩테스트다 (63)
        • 2021_알고리즘 스터디 (30일) (28)
        • 주간코딩 스터디 (주코스) (17)
      • 독서 견문록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘_스터디
    최단경로
    기술면접
    백트랙킹
    dfs
    글또
    python3
    Level2
    그래프이론
    MLFlow
    파이썬 3
    백준
    mrc
    이진탐색
    dp
    Level2_PStage
    그리디
    Level1
    다시보기
    부스트캠프_AITech3기
    주간회고
    구현
    ODQA
    단계별문제풀이
    부스트캠프_AITech_3기
    프로그래머스
    이코테
    알고리즘스터디
    정렬
    U_stage
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
논곰
37. 비밀지도 찾기
상단으로

티스토리툴바