본문 바로가기

알고리즘44

[항해99][프로그래머스] 두 정수 사이의 합 in Javascript 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력 예 a b return 3 5 12 3 3 3 5 3 12 내가 푼 풀이 function solution(a, b) { let answer=0; let maxNum = Math.max(a,b) let minNum = Math.min(a,b) for(minNum ; minNum 2022. 7. 15.
[항해99][프로그래머스] 가운데 글자 가져오기 in Javascript 문제 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s return "abcde" "c" "qwer" "we" 내가 푼 풀이 function solution(s) { let strLength=s.length; let start=Math.round(s.length/2)-1; if(strLength%2==1){ return s.slice(start,start+1) } else{ return s.slice(start,start+2) } } 문자열을 쪼갤 때 홀수와 짝수가 쪼개는 방법이 다르므로 if문을 통해 구현한다. 문자열이 홀수일 때, 문자 하나를 출력.. 2022. 7. 15.
[백준 17298번] 오큰수 문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,00.. 2021. 11. 16.
[백준 2004번] 조합 0의 개수 in python 문제 $n \choose m$의 끝자리 $0$의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. 출력 첫째 줄에 $n \choose m$의 끝자리 $0$의 개수를 출력한다. 예제 입력 1 25 12 예제 출력 1 2 이전에 https://lucian-blog.tistory.com/84 팩토리얼 0의 개수를 구하는 문제를 풀었다. 이것도 비슷하면서 조금은 다른 문제이다. 우선 조합식을 보자. $_{n}C_{r}=\frac{n!}{(n-m)!r!}$ 이제 예제를 봐야한다. n=10, m=5로 놓는다. 그러면 $_{10}C_{5}=\frac{10!}{(10-5)!5!} = \frac{3.. 2021. 11. 16.
[백준 1676번] (factorial)팩토리얼 0의 개수 in python 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력 1 10 예제 출력 1 2 예제 입력 2 3 예제 출력 2 0 처음에 어떤 의미의 문제인가 이해를 하지 못했다. 그러다 계산기로 10!을 쳐보고 이해를 했다. 5!=120 10!=3,628,800 즉 뒤에 있는 0의 갯수를 말하는 것이였다. 10!은 5의 배수인 5와 10이 두개이므로 0이 2개가 나온다. 15!는 5,10,15 3개이므로 0이 3개가 나온다. 그렇기에 5만 나올때마다 cnt+=1해주면 될줄 알았다.... n=int(input()) cnt=0 for i in range(0,n.. 2021. 11. 16.
stack, queue, deque in python stack, queue, deque에 대해 알아보자. stack은 선입후출! - 먼저 들어온 것이 나중에 빠져나간다. 컵 모양이라 생각하면 똑같다. 1,2,3,4가 stack이라는 리스트에 들어갔다면 꺼낼 때는 4,3,2,1순으로 나와야한다. python에서 특정한 라이브러리가 없는 것으로 알고있다. stack은 평범한 리스트로 구현이 가능하다. stack=[] stack.append(1) stack.append(2) # stack = [1,2] stack.pop() # 결과 : 2 stack.pop() # 결과 : 1 stack.append(3) stack.append(4) # stack = [3,4] stack.insert(0,5) # stack = [5,3,4] stack.pop(0) # 결과 : .. 2021. 11. 12.
[백준 9375번] 패션왕 신해빈 in python 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다. 다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다. 모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 .. 2021. 11. 10.
[백준 3036번] (Fraction)분수 표현 in python 분수로 표현해주는 라이브러리 from fractions import Fraction Fraction(3,1) # 3/1을 분수로 표현한다. f=Fraction(12,8) # 12/8을 3/2으로 표현해준다. f=Fraction(4,1) # 4로 표현해준다. f=Fraction(12,8) print(f.numerator) print(f.denominator) # numerator는 분자를 denominator는 분모를 불러온다. # 결과로 3과 2를 차례대로 출력해준다. 2021. 11. 10.
[백준 2981번] 검문(약수 알고리즘) in python 문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 프로그램을 작성하시오. 입력 첫째 줄에 종이에 적은 수의 개수 N이 주어진다. (2 ≤ N ≤ 100) 다음 줄부터 N개 줄에는 종이에 적은 수가 하나씩 주어진다. 이 수는 모두 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. .. 2021. 11. 10.