파이썬 알고리즘 문제풀이(코딩테스트 대비)

파이썬 알고리즘 문제풀이(코딩테스트 대비)

(11개의 수강평)

552명의 수강생
자료구조Python코딩 테스트
66,000원
지식공유자 · 김태원
116회 수업· 총 25시간 22분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급
onevibe12 프로필

오늘도 한 강의에서 많은것을 배웠습니다.. 감사합니다! onevibe12 1일 전

이렇게 짰었는데 .. 오늘 선생님 코드 보고 감탄하고갑니다...;;

1
dlgpqls98 프로필

숫자만 추출 dlgpqls98 2일 전

from re import findall

s=input()

a= findall("[0-9]+",s)

res=0

for i in a:

    b=int(i)

    res=res*10+b

print(res)

count=0

for i in range(1,res+1):

    if res%i==0:

        count+=1

print(count)

마지막에서 오류가 나는데 이유가 뭔가요ㅜㅠ

1
onevibe12 프로필

오... 드디어 처음으로 풀었습니다.... onevibe12 2일 전

이때까지 혼자서 문제를 끝까지 못풀어서 많이 의기소침해지고

이번에도 못풀겠구나 했는데 처음 인덱스값에 접근해서 증감시키는 힌트보고

1시간정도 소요해서 풀 수 있었습니다.

풀고 선생님 코드를 보니  비슷하게 되서 매우 놀랐는데요

오늘은 자신감을 되찾는 시간이었던거 같습니다!

감사합니다!

1
dlgpqls98 프로필

회문 문자열 중에서 dlgpqls98 2일 전

else가 왜 for 문에 종속되지 않고 같은 위에서 코딩되나요??ㅜㅠ 

1
dhotksis 프로필

for loop 슬라이싱 질문 dhotksis 2일 전

안녕하세요 강사님, 좋은 강의 감사드립니다!

저는 처음에 for loop을 슬라이싱을 이용하여 풀려고 하였습니다.

for i in l[ : len(l) - 2]:

    print(i)

    for j in l[i + 1 : len(l) - 1]:

        print(j)

        for k in l[j + 1 :]:

            print(k, end = ' ')

            if i + j + k in a:

                continue

            else:

                a.append(i + j + k)

이런식으로 for loop을 작성하였으나, 정상적으로 제가 만든 l 이라는 리스트를 돌지 않던데, 인덱싱을 사용한 경우는 for loop을 사용할 수 없는것 인가요? 아니면 제가 문법 오류를 낸것 인가요?

2
onevibe12 프로필

안녕하세요 선생님 질문있습니다 .. ㅠ onevibe12 4일 전

이때가지 강의 4개문제중 혼자 힘으로 푼건 1번문제가 다입니다...

3 ~ 4시간동안 고민하다 도저히 안되겠다 싶어 강의를 시청하면 이해가 되긴합니다만

혼자서 해결을 못해서 자괴감이 드는데요 ..

이게 정상일까요...?

이정도도 혼자힘으로 풀지못해 저 자신한테 매우 문제가 있어보여 여쭤봅니다. 

2
김정민 프로필

set관해서 질문입니다. 김정민 6일 전

풀이를 보기전에 강사님이랑 거의 비슷하게 코드를 짰는데 다른점이 있다면 저는 res를 리스트로 해놓고 if L==n에서 
not in 구문으로 중복 여부를 검사했는데요


이렇게하니까 마지막 case에서 시간초과가 났는데 set()으로 해도 결국 중복여부를 검사하려면 모든 요소를 돌아야하지 않나요? set으로하면 왜 더 빠른지 궁금합니다.

1
mot312 프로필

문제 6-4 <합이 같은 부분집합> mot312 6일 전

안녕하세요 선생님. 강의 잘 듣고있습니다.

문제 6-4번 풀던 중에 궁금한점이 생겼는데요. 

dfs 함수의 if문에서 조건을 충족하면 True를 리턴하고, 맨 마지막에 있는 if문을 통해 yes를 프린트 하려고 했는데,
None이 출력되는 이유가 궁금합니다!

```

# 합이 같은 부분집합

import sys
sys.stdin = open('input4.txt', 'r')

n = int(input())
fo = list(map(int, input().split()))
result = [0]*n

def dfs(k):
summ = 0
if k == n :
for i in range(n):
if result[i] == 1 :
summ += fo[i]
if summ*2 == sum(fo) :
return True
else :
result[k] = 1
dfs(k+1)
result[k] = 0
dfs(k+1)

print(dfs(0))
if dfs(0):
print("YES")
else :
print("NO")
```

1
wkdalsgh192 프로필

for 문 사용 시 조건문으로 break할 때의 시간 복잡도 wkdalsgh192 8일 전

챕터 3-5의 수열의 합을 먼저 풀어봤을 때 제가 작성했던 코드입니다. for 문을 두 번 사용해서 그런지 채점시 3번부터 time out이 떴습니다. 두 번 째 for 문에서 조건을 충족하는 경우 break를 써서 시간 복잡도를 줄여줬다고 생각했는데 왜 시간 초과가 뜨는 지 모르겠습니다. 좋은 강의 항상 고맙습니다.

cnt=0
for i in range(n):
    if a[i] > m:
        continue
    elif a[i] == m:
        cnt += 1
    else:
        for j in range(i+1, n+1):
            if sum(a[i:j]) > m:
                break
            if sum(a[i:j]) == m:
                cnt+=1
                break

1
mhr 프로필

중복 순열 문제 코드 관련 질문입니다. mhr 8일 전

메인함수에서 res를 [0] * n 으로 초기화하셨는데, 혹시 [0]*m 이 되어야하는 것 아닌가요?  물론 n이 m보다 크거나 같으니까 문제가 발생하지는 않을 텐데 코드를 다시 보다보니 의미상 m 이 되어야 맞는 것 아닌가 하는 생각이 들어서요. 아니면 혹시 일부러 n으로 하신 건가요? 

n, m = map(int, input().split())
res = [0] * n
...

1
김정민 프로필

조합처럼 풀어봤는데요 김정민 8일 전

조합에서 배운대로 풀어봤는데 혹시 강의에서 나온코드랑 비교했을 때 이 코드의 단점이 있을까요?

def dfs(s, tot, time):
    global grade
    if time > m:
        return
    if tot > grade:
       grade = tot
    for i in range(s, n):
        dfs(i+1, tot+ques[i][0], time+ques[i][1])



n, m = map(int, input().split())
ques = []
for _ in range(n):
    a, b = map(int, input().split())
    ques.append((a, b))
grade = 0
dfs(0, 0, 0)
print(grade)

1
손수현 프로필

sys.exit() 사용하지 않기 손수현 9일 전

코딩테스트 환경에서는 sys 라이브러리 사용이 안되는경우도 있다고 합니다. 메인 코드에 switch라는 글로벌 변수를 두고(1로 초기화), DFS 조건식이 만족되었을 때 switch를 0로 바꾸어 코딩해도 실행시간이나 이 외에 다른 이슈가 없는지 궁금해 질문 올립니다. 

이 외에 sys.exit(0) 말고 다른 방법으로 종료시킬 방법이 있는지 궁금합니다. 

def DFS(L, subTotal):
global switch
if L == n:
if subTotal == (total_sum - subTotal):
print("Yes")
switch = 0
sys.exit()
else:
if switch :
DFS(L+1, subTotal + num_lst[L])
if switch :
DFS(L+1, subTotal)

if __name__ == '__main__':

sys.stdin = open('TestData/4/in5.txt')
switch = 1
n = int(input()) # 원소 개수
num_lst = list(map(int, input().split()))
total_sum = sum(num_lst)
DFS(0, 0)

1
와니 프로필

대표값 문제에서요 와니 11일 전

이렇게 풀었는데 이렇게 풀면 예외 사항이 발생할 수 있을까요? 주어진 input에서는 다 success가 뜨는데 정확한가 확인하고 싶어서요 (round 문제를 제외하고요!)

1
HOYA 프로필

안녕하세요. 질문은 아니고 갑자기 채점이 안되어서 끙끙 대다가 팁 발견해서 공유해드려요! 해제 하니깐 잘되네요 HOYA 12일 전

Tip

1
뚜시뚜시 프로필

강사님 혹시 정렬 알고리즘 보충부탁해도 될까요?? 뚜시뚜시 12일 전

강사님 강의보고 알고리즘 기초를 닦고 있습니다! 

근데 정렬 관련된 알고리즘에 어려움을 겪고 있는데 정렬관련된 강의가 있었으면 합니다..! 

퀵정렬, 머지정렬, 힙정렬, 라딕스정렬 등등 정렬 알고리즘이요! 

4
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스