code(105)
-
[코딩 테스트 연습] 이진 변환 반복하기
문제 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. ❗제한사항❗ s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 입출력 예 ..
2023.01.29 -
[백준 2446번] 별 찍기 -9 -python
2446번 https://www.acmicpc.net/problem/2446 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 🐰 나의 코드 n=int(input()) for i in range(n,0,-1): print((n-i)*" "+(2*i-1)*"*") for j in range(2,n+1): print((n-j)*" "+(2*j-1)*"*") 문제의 출력 2xN-1번째에서 힌트를 얻었다. 처음에는 center을 이용해서 문제를 해결하려 했는데, 출력의 형태가 잘못됐다 그래서 애 좀 먹었다. 어쨌든 이 코드는, 입력받는 숫자를 n에다 저장한 후 두 번의 for문을 통해 ..
2023.01.29 -
[백준 2407번] 조합 - python
2407번 https://www.acmicpc.net/problem/2407 문제 nCm을 출력한다. 입력 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) 출력 nCm을 출력한다. 🐰 나의 코드 n,m=map(int,input().split()) nsum=1 m=min(m,n-m) for ni in range(n,n-m,-1): nsum*=ni for mi in range(1,m+1): nsum//=mi print(nsum) 수험생 시절에 열심히 하던 조합을 다시 만났다. 나이스 투 믿유..^^ nCm의 공식은 n! / (m! x (n-m)!)인데, 이걸 최대한 단순화해야겠다는 생각을 갖고 있었다. 그러다 기억한 공식을 따라서 코드를 작성했다. 예를 들어 8C5라면 8C..
2023.01.28 -
[코딩테스트 연습] 다음 큰 숫자
문제 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. ❗제한사항❗ n은 1,000,000 이하의 자연수 입니다. 입출력 예 입출력 예 설명 입출력 예#1 문제 예시와 같습니다. 입출력 예#2 15(1111)의 다음 큰 숫자는 23(10111)입니다. ✔풀이 def..
2023.01.28 -
[백준 1929번] 소수 구하기 - python
1929번 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 🐰 나의 코드 m,n = map(int,input().split()) for i in range(m,n+1): sum=0 if i
2023.01.27 -
[코딩테스트 연습] 최솟값 만들기
문제 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21) A..
2023.01.26