본문 바로가기

Algorithm272

[ 파이썬(python) ] 프로그래머스 level1 - 비밀지도 📌 비밀지도 문제 설명 💡 나의 풀이 비밀지도 문제의 핵심은 다음과 같다. 벽 부분은 1, 공백 부분은 0으로 부호화한다. 지도 1과 2를 겹쳤을 때 어느 하나라도 벽이면 전체 지도에서도 벽이다. 출력 시 벽은 #, 공백은 ' '으로 설정하자. 각각의 배열을 이진수로 변경하고 논리 연산자 or를 사용해 겹치는 부분을 판단한다. 배열로 선언된 10진수의 값을 2진수로 바꿨다. format함수를 사용했는데 '{0:>0{1:}b}'.format(i, n)의 해석은 다음을 참고하자. {0:}, {1:}: format함수의 인자 순서 >: 오른쪽 정렬 0: 자리수만큼 정렬 후 남은 공간은 0으로 채움(미 사용 시 공백으로 채움) b: 이진수(bin) 형태로 반환 zfill함수로도 동일하게 사용할 수 있다. (bi.. 2021. 4. 7.
[python] 백준 2445 - 별 찍기 8 📍 백준 2445 - 별 찍기 8 백준 2445 - 별 찍기8 ⚡️ 나의 풀이 예제 출력에서 가로로 2등분하고 풀면 쉽게 접근할 수 있다. 2등분했다는 이야기는 결국 반복문이 총 2개 사용된다는 이야기다. 여기서 세로로 2등분을 또 해보자. 이전의 별 찍기 문제들의 패턴과 유사한 모양들이 나온다. 예제 출력에서 패턴사이에 있는 공백을 생각해보자. 1번패턴을 보면 출력뒤에 공백이 존재한다는 점을 알 수 있다. 이전에 풀었던 별찍기 1, 2, 3을 보면 출력뒤에 공백이 존재하지 않는다. 이제 공백을 어떻게 줄건지 생각해보자. 공백이 자릿수만큼 정해진것이 아니고 i가 증가할때마다 공백이 줄어드는것을 볼 수 있다. 이를 코드로 구현하면 '*' * i + ' '*(n-i)가 될것이고 이를 반대로 작성하면 2번패턴.. 2021. 4. 5.
[python] 백준 2442 - 별 찍기 5 📍 백준 2442 - 별 찍기 5 백준 2442 - 별 찍기5 ⚡️ 나의 풀이 올바르게 제출했다고 생각하는데 오답판정을 받았다. 왜냐하면 '*'뒤는 값이 없어야하는데 공백으로 채워진 '값'으로 처리됐기 때문이다. formatting 함수로 구현했는데, formatting함수는 값 앞뒤를 모두 공백으로 채워준다. 따라서 값 앞에만 공백으로 채울 수 있는 ' ' * (n-i)식을 사용하자. n = int(input()) for i in range(1, n+1): print(' ' * (n-i) +'*'*((2*i)-1)) 2021. 4. 5.
[python] 백준 2920 - 음계 📍 백준 2920 - 음계 백준 2920 - 음계 ⚡️ 나의 풀이 처음에 c d e f g a b C를 각각 1, 2, 3 ... 8의 숫자로 변경한다고 써있길래 ord()함수를 사용하여 c ~ g까지는 ord(i) - 98 a ~ b까지는 ord(i) - 91 C는 ord(i) - 59 조건을 세워 1~8까지 나오게 만들어야하나?라고 생각했는데, 예제 입력을 보니까 알파벳이 아닌 숫자가 들어갔다. 곰곰이 생각하다가 그럼, result = [1, 2, 3, 4, 5, 6, 7, 8]을 선언하고 result와 같을 때 result[::-1]와 같을 때 else일 때 처럼 풀면안되나? 하고 코드를 제출했는데 정답판정을 받았다. 😃 😃 더욱 간단하게 푸는 방법을 찾아 좋았다. n = list(map(int, .. 2021. 4. 5.
[ 자바스크립트(JS), 파이썬(python) ] 프로그래머스 level1 - x만큼 간격이 있는 n개의 숫자 📌 x만큼 간격이 있는 n개의 숫자 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴하는 함수를 만드시오. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 1️⃣ 파이썬(Python) 풀이 x가 -10000000 이상, 10000000이하인 정수이므로, 계산 방법을 양수일 때, 음수일 때로 나눴다. 또, 이 문제는 while, range로 풀 수 있는데, 코드를 짧게 만들고 싶어 한 줄로 요약하려다가 실패하고 while문으로 풀었다.(그냥 양수, 음수별로 나눠서 range로 작성했으면 더 짧았을 텐데...) 코드 순서대로 풀이방법은 다음과 같다. while: 기존 number = number .. 2021. 4. 5.