Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- error
- SEF2022
- 스파르타코딩클럽
- 장고이미지처리
- 네이버커넥트재단
- MongoDB
- 개인정보수집유효기간
- 프로그래머스입문
- 스파르타
- 20492번
- React
- 프로그래머스
- 장고 다중이미지
- ㅐㄱ이
- 파이썬
- html
- 참가후기
- 코딩기초트레이닝
- python
- useState
- sql
- 파이썬무료강의
- GIT
- css
- jquery
- 22938번
- django multi image
- 프론트엔드
- 반응형
- 무료강의
Archives
- Today
- Total
코딩,해볼까
05.19. 팀원들과 알고리즘 풀이 / 백준 / 별 찍기 강아지 세금 소수 찾기 본문
1. 오늘 배운 것
0-1. 문제집
- 백준 왕초보
- 백준 별찍기
- 백준 삼성 SW 역량 테스트 기출 문제
0-2. 오늘의 문제
- ✔️ 별 찍기 02 2439번: 별 찍기 - 2 (acmicpc.net)
- ✔️ 강아지 10172번: https://www.acmicpc.net/problem/10172
- ✔️ 세금 20492번: 세금 (acmicpc.net)
- ❌ 소수 찾기 1978번: https://www.acmicpc.net/problem/1978
1. 별찍기
N = int(input())
for i in range(1, N+1):
#1
#print((' ' * (N-i)) + (i * '*'))
#2
i = i*'*'
print(i.rjust(N))
2. 강아지
print('|\\_/|\n|q p| /}\n( 0 )\"\"\"\\\n|\"^\"` |\n||_/=\\\\__|')
print('''
|\\_/|
|q p| /}
( 0 )\"\"\"\\
|\"^\"` |
||_/=\\\\__|
''')
print("|\\_/|")
print("|q p| /}")
print("( 0 )\"\"\"\\")
print("|\"^\"` |")
print("||_/=\\\\__|")
3. 세금
n = int(input())
A = n * 0.78
B = n * 0.8 + n * 0.2 * 0.78
print(int(A), int(B))
4. 소수 찾기. thanks to sdoram👍
num1 = input()
num_list = list(map(int, input().split()))
answer = []
for i in num_list:
count = 0
for n in range(1, i+1):
if i % n == 0:
count += 1
if count == 2:
answer.append(i)
print(len(answer))
- 이 식을 만들면서 헤맨 부분
- for문 안에 for문 사용에 대한 확신이 없었지만, 알고있었던 부분이 맞았다.
- 내가 만든 식은 1부터 i까지 range를 통해 나열된 수들로 i를 나누었을 때, 몇 번 나뉘는지 확인하는 것이다. count가 2가 된다면 1과 나 자신, 총 2번 밖에 나누지 못하므로 소수가 된다. count = 2인 수만을 고르면 된다는 생각까지 하지 못했다.
- 팀원들의 코드 및 자료 공유
- 내가 풀어보고 싶었던 방향
N = int(input())
number_list = map(int, input().split())
count = 0
for i in number_list:
check = 0
if i == 1:
check = 1
for j in range(2, i):
if i % j == 0:
check = 1
if check == 0:
count += 1
print(count)
- 에라토스테네스의 체
- 2의 배수, 3의 배수, 4의 배수..... 를 순서대로 제외(False처리) 하여, 마지막에 남은 True들의 length를 구한다.
- https://maramarathon.tistory.com/39 세히님 공유 블로그
- https://zeus2141.tistory.com/32: 철민님 블로그
- 두잇! 알고리즘 책 소라님 공유
- 성우님 풀이
import math #sqrt함수를 사용하기 위해서, math함수를 호출합니다
# n=18 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
# n=18 [False, False, True, True, False, True, False, True, False, True, False, True, False, True, False, False, False, True, False]
def solution(n):
array = [True for i in range(n + 1)] # 0부터 n까지 정수들에 대해, 모두 True로 저장합니다
array[0] = False
array[1] = False #0번째, 1번째 index인 True는 False로 바꾸어줍니다. 이미 소수가 아니니까
# array = [False, False, True, True, True, True, True, True]
for i in range(2, int(math.sqrt(n)) + 1):
# 루트 n 2의 제곱 = 4, 루트4 =2, 루트9 = 3, 루트 16 = 4, 루트 13 = 3.xxx, 루트18 = 4.xxx
# 만약 n이 18이라고하면, 우리는 2부터 5까지 반복문을 시작합니다.
if array[i] == True:
# 2부터 5까지는 아마 True값을 저장하고 있겠죠?
# 2의 배수인 4,6,8,10...16,18까지는 False가 됩니다
# 3의 배수인 6,9,12,15,18은 False가 되겠습니다.
# 그런데, 7의 배수는 어떡하냐구요 ? 8의 배수도요 ?
# 이미 7의 배수 14는 False입니다. 8의 배수 16도 마찬가지구요!
j = 2
while i * j <= n:
array[i * j] = False
j += 1
# 2의 배수를 False로 저장하기 위해서, 2를 곱한 4, 6, 8, ...를 False로 저장하고
# 3을 곱한 6을 False로 저장하기 위해서 j+=1을 해서 i * j를 해줍니다.
# 3을 곱한 6을 False로 저장하고
# 4을 곱한 8을 False로 저장해줍니다.
return array.count(True)
# array = [False, False, True, True, False, True, False, True, False, True, False, True, False, True, False, False, False, True, False]
#count함수는 True인 원소들의 개수를 세어줍니다. 그걸 return하면 소수의 개수가 나오게됩니다
- 좋아요를 가장 많이 받은 풀이방법. set 함수(집합) 사용으로 훨씬 간편해졌다.
def solution(n):
num=set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num-=set(range(2*i,n+1,i))
return len(num)
'Back > TIL' 카테고리의 다른 글
05.22. [리치메이커_project. 1] 프로젝트 S.A. / 간단한 로고와 html의 nav바, footer 작업 (0) | 2023.05.23 |
---|---|
05.20 - 05.21 머신러닝 강의 정리 (0) | 2023.05.20 |
05.18. 팀원들과 알고리즘 풀이 / 백준 / 별찍기 윤년 고양이 백발백준 (2) | 2023.05.18 |
05.13. [술술술_project. 6] MyPage Javascript 작업 (2) (0) | 2023.05.13 |
05.12. [술술술_project. 5] MyPage Javascrpit작업 (1) (0) | 2023.05.13 |
Comments