728x90
섹션 2 (2)
파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의
파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...
www.inflearn.com
앞서 포스팅과 같이 한달동안 이 강의를 스터디원들과 함께 풀어오고
질의응답 & 새롭게 배운것들 정리하는 스터디를 진행하기로 했다.
꾸준히 화이팅!
7번 문제 : 소수의 개수
import sys
sys.stdin = open("input.txt","r")
n = int(input())
arr = [0]*(n+1)
cnt = 0
for i in range(2,n+1) :
if arr[i] == 0 :
cnt += 1
for j in range(i, n+1, i) : # 이 생각을 못했다.
arr[j] = 1
print(cnt)
https://jump-developer.tistory.com/60 참고
8번 문제 : 뒤집은 소수
import sys
sys.stdin = open("input.txt","r")
n = int(input())
arr = list(input().split()) # str형태로 입력받기
def reverse(x) :
return int(x[::-1]) # 뒤집기는 int는 안되기때문
def isPrime(x) :
if x == 1 : return False # 1은 소수가 아니에요
for i in range(2,x) :
if x%i == 0 :
return False # 소수가 아니에요
return True # 소수가 맞아요
for val in arr :
tmp = reverse(val)
isOk = isPrime(tmp)
if isOk : print(tmp,end=' ')
- 혼자 문제를 보고 풀어서 강사님의 풀이와 다르다.
강사님은 isPrimedml range(2,x)에서 x를 x//2 +1 로 지정하셨다.
1과 자기자신을 제외하면 가장 큰 약수는 자기자신 // 2 이기 때문이다.
9번 문제 : 주사위 게임
<내가 작성한 코드 >
import sys
sys.stdin = open("input.txt","r")
n = int(input())
arr = []
for i in range(n) :
arr.append(list(map(int,input().split())))
answer = 0
max_ans = 0
for val in arr :
dice = [0] * 7
for i in val :
dice[i] +=1
max_val = 0
for idx, value in enumerate(dice) :
if max_val < value :
max_val = value
index = idx
if max_val == 3 :
tmp = 10000 + index*1000
if max_ans < tmp : max_ans = tmp
elif max_val == 2 :
tmp = 1000 + index*100
if max_ans < tmp : max_ans = tmp
else :
max_dice = 0
for j in val :
max_dice = max(max_dice, j)
tmp =max_dice * 100
if max_ans < tmp : max_ans = tmp
print(max_ans)
- 혼자 문제를 보고 풀어서 강사님의 풀이와 다르다.
그런데 강사님의 코드가 더 쉽다.
강사님이 작성하신 코드
import sys
sys.stdin = open("input.txt","r")
max_money = 0
n = int(input())
for i in range(n) :
tmp = input().split()
tmp.sort() # 문자열 상태라도 sort는 잘 되는구나
a,b,c = map(int,tmp)
if a == b and b == c :
money = 10000 + a*1000
elif a == b or a == c :
money = 1000 + a*100
elif b == c :
money = 1000 + b*100
else :
money = c*100
if max_money < money :
max_money = money
print(max_money)
10번 문제 : 점수계산
내가 만든 코드
많이 복잡하다. 그냥 강사님이 알려주신 코드로 푸는게 좋다.
import sys
sys.stdin = open("input.txt","r")
n = int(input())
arr = list(map(int,input().split()))
index = 0
score = 0
interval = 0
for val in arr :
if val == 1 :
if interval == 0 : # 처음으로 시작
interval+=1
index += interval
else :
interval+=1
index += interval
else: # val ==0 일경우
score += index
print(index)
interval,index = 0, 0
if index!= 0 : # 점수를 index에 넣어놓고 다음 0 이 안나오면 사라지는 문제가 발생 이를 해결하기 위해서
score += index
print(score)
강사님의 코드
import sys
sys.stdin = open("input.txt","r")
n = int(input())
arr = list(map(int,input().split()))
ans = 0
cnt = 0
for x in arr :
if x == 1 :
cnt+=1
ans+= cnt
else :
cnt =0
print(ans)
이렇게 간단한 코드를 그렇게 어렵게 풀다니...이런
확실히 스터디를 하면 해야할 목표가 명확해지고 데드라인이 생겨서 하게된다.
목표한 강의 전부 듣기 완료!
반응형
'스터디 > 알고리즘스터디-알까기🎯' 카테고리의 다른 글
[6]알고리즘스터디 - 섹션6_3주차 스터디 (0) | 2022.02.28 |
---|---|
[3]알까기 스터디 -섹션3_1주차(일요일) (0) | 2022.02.28 |
[5]알고리즘스터디 - 섹션5_2주차 스터디 (0) | 2022.02.28 |
[4]알고리즘스터디 - 섹션4_2주차 스터디 (0) | 2022.02.17 |
[1]알고리즘 스터디 - 알까기 시작 _섹션2(1) (0) | 2022.02.08 |