일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 9610
- 한글이 두 번 입력됨
- 비동기
- __proto__ 접근자 프로퍼티
- Tanstack Query
- 최소공배수
- prototype 프로퍼티
- 유클리드 호제법
- 동기
- 낙관적 업데이트
- 동적 계획법
- 한글 입력 시 이벤트 두 번 발생
- 자바스크립트
- 시간
- 2522
- 파이썬
- 메타버스
- css
- python
- 프로그래밍
- dp
- C++
- 알고리즘
- 백트래킹
- 함수 객체의 프로퍼티
- 백준
- float: right
- 백준 9610번 파이썬 문제 풀이
- javascript
- backtracking
- Today
- Total
목록알고리즘 PS (63)
염딩코
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HgjnT/btscZrrLF8s/aPsaJDZJnxr3zuKKwhipR1/img.png)
문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다. 출력 첫째 줄에 N!을 출력한다. 풀이 이 문제는 재귀에 대한 기본적인 내용을 담고 있다. 다만 주의할 점은 입력의 범위를 확인하고 int로 표현할 수 있는 수의 범위를 넘어가는 것을 알아야 한다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czMT9b/btrt6fbiNND/YzJTqChD5siPbebbXDLlY0/img.png)
[문제] & [결과] [해설] 이 문제는 두 수를 입력받고 그 두 수 사이에서 소수를 골라서 소수들의 합과 소수들의 최솟값을 구하는 문제이다. 아래의 코드의 메커니즘은 이렇다. 먼저 두 수를 입력받으면 두 수 사이에서 반복문을 시행한다. 이중반복문을 이용하여 i 변수를 j 변수로 나눠서 나머지가 0이라면 cnt값을 증가시켜준다. 이유는 간단하다. 소수는 나누어서 나머지가 0인 수가 자기자신 밖에 없기 때문이다. 1은 기본적으로 소수가 아니기 때문에 제외시켰다. 그래서 j도 2부터 시작하는 것이다. 2부터 시작했기 때문에 cnt가 1일 때, sum 변수에 값들을 더해준다. 그리고 이전에 초기화해놓았던 min 변수와 비교하면서 min보다 더 작은 수라면 min변수를 계속 업데이트 시켜준다. 그렇게 sum이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/phHz6/btrujJuoAxc/dSaIkGBJS6uK1gh9LKBuUk/img.png)
[문제] & [결과] [해설] 이 문제는 제목에서 알 수 있듯이 어떤 특정 수의 약수를 구하는 문제이다. 문제에서 보면 약수의 특성을 알려주는데, 바로 특정한 수를 특정한 수의 약수로 나누면 나머지가 0인 것이다. 그런데, 문제는 단순히 약수가 무엇인지 묻는 것이 아니라 K번째로 작은 수를 출력하도록 원한다. K번째로 작은 수를 출력하기 위해서는 데이터가 정렬되어있거나 약수를 작은 순서대로 저장해놓는 방법이있다. 필자는 두 번째 방법을 이용했다. 그래서 vector을 이용해 반복문 i=1부터 비교해가면서 vector에 값을 저장했다. if(n%i==0)을 보면 이 조건을 만족할 때, vector에 저장하는 것을 알 수 있다. cnt는 출력의 세부 조건에 특정한 수의 약수의 개수가 K보다 작을 때 0을 출..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSBIFn/btrt6evy8nF/F5BdEjqM4sSGmNpzSDQQH0/img.png)
[문제] & [결과] [해결] 이 문제는 벡터를 이용해서 홀수를 만족했을 때, 벡터에 넣어준다. 그리고 홀수가 없을 경우를 대비해, cnt라는 변수를 만들어줘 cnt가 0이면 -1을 출력한다. algorithm 라이브러리에 있는 min함수를 이용해 최솟값을 구한다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzbOal/btrt7urEUpw/XdrN8w6xNuviEvUNqV8dH1/img.png)
[문제] & [결과] [해설] 이 문제는 별 찍에서 층이 홀수일 때와 짝수일 때를 나눠서 해결하면 쉽습니다. 홀수일 때는 앞에 공백이 없고, 짝수일 때는 앞에 공백이 있는 별을 만들어주면 됩니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgNqEv/btrt3ePIAMd/OnnpSDFiZWHCypFstKz5i1/img.png)
[문제] & [결과] [해설] 이 문제는 피보나치 수열을 구현하는 문제입니다. 피보나치 수열에 대한 간단한 설명은 위의 문제 설명에 있습니다. 그럼 바로 아래의 코드를 보시면, FIbo라는 함수에 첫 번째, 두 번째 값들은 초기화해주었습니다. 그리고 첫 번째, 두 번째일 때는 각각의 값들을 반환하도록 적어주었습니다. num까지의 수중에서 첫 번째와 두 번째를 제외한 부분은 반복문을 통해서 하나씩 옮겨가면서 처리해줍니다. c언어를 공부하면 자주 연습했던 swap이랑 비슷하지만 n2=n1+n2으로 처리해줬기 때문에 조금 다릅니다. 그렇게 하고 마지막에 n2를 반환해주면 끝! 참고로 Fibo함수에 주석처리되어 있는 부분은 반복문이 아니라 재귀함수로 풀은 것입니다. 재귀함수를 이용하면 코드의 길이는 더 짧아지고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bm8Npi/btrtXxbVs6z/5AKg4BW8RAinqdKCLd33Nk/img.png)
[문제] & [결과] [해설] 이 문제는 문제에서 규칙을 알려주기 떄문에 어렵지 않습니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6Pqz2/btrtYcrRtuB/kdF4SHIpotHae2EfFq0gk1/img.png)
[문제] & [결과] [해설] 이 문제도 기본적인 덧셈 문제입니다. 아래의 코드를 참고하세요! 그리고 저는 이 문제를 풀다가 Case 부분을 처리해주지 못해서 한 번 틀렸습니다. 어려분은 실수하지마세요!
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/k69jg/btrtYewkUlM/Bq7NIqnnjcdJSGTIDof5q0/img.png)
[문제] & [결과] [해설] 이 문제에서는 몫과 나머지를 이용한 문제입니다. 크게 어렵지는 않지만, 예제 출력 1을 보시면 알 수 있듯이, 출력하는 문장이 긴 편입니다. 그래서 출력 문장을 작성해주는 데 있어서 틀리지 않는다면 쉽게 풀 수 있는 문제입니다!