스터디/알고리즘스터디-알까기🎯

[2]알고리즘스터디 - 섹션2(2)_1주차 스터디

개발자 덕구🐾 2022. 2. 9. 15:22
728x90

섹션 2 (2)

 

 

https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8/dashboard

 

파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의

파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...

www.inflearn.com

 

앞서 포스팅과 같이 한달동안 이 강의를 스터디원들과 함께 풀어오고

질의응답 & 새롭게 배운것들 정리하는 스터디를 진행하기로 했다. 

 

by.Annie SprattHire

꾸준히 화이팅!

 

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) 

이렇게 간단한 코드를 그렇게 어렵게 풀다니...이런

 

 

확실히 스터디를 하면 해야할 목표가 명확해지고 데드라인이 생겨서 하게된다.

 

 

 

목표한 강의 전부 듣기 완료!

반응형