티스토리 뷰

python sw 문제해결 기본 - list1


다시 코딩 공부하려고 swea 들어갔는데

강의 다시봐도 잠이 온다,, 쿨쿨

미쳤다,, 일어나 용사여

잠든다,,,

눈 떠


sort(정렬) 

- 정리하려다 분량이 길어질 각이라 포기

2개 이상의 자료를 특정 기준에 의해 작은 값부터 큰 값(오름차순) 혹은 그 반대의 순서대로 재배열하는 것

 

버블정렬

인접한 두 개의 원소를 비교하며 자리를 계속 교환하는 방식

1. 첫 번째 원소부터 인접한 원소끼리 계속 자리를 교환하면서 맨 마지막 자리까지 이동

2. 한 단계가 끝나면 가장 큰 원소 또는 가장 작은 원소가 마지막 자리로 정렬됨

3. 교환하며 자리를 이동하는 모습이 물 위에 올라오는 거품모양 같아서 버블 정렬이라고 함

시간 복잡도 O(n^2)

 

카운팅 정렬 

설명하기 어렵네 이해하는것도 쉽지않네 

다른 블로그를 참고하자

저번에 들을 때도 잘 이해 못했다.

근데 이젠 살짝 알겠다.

 

그냥 어렵다


일단 잘 모르겠고 전기버스 문제

2021.07.16 - [코딩공부] - [SWEA] sw expert academy - 4831

다시 풀려고 했는데 

개어렵다..

다시 공부한다. 나는야 재수강~~~

주석을 달았다.

T = int(input())
for test_case in range(1, T + 1):
    # k = 발걸음 수 n= 최종정류장번호 m = 충전기가 설치된 정류장 개수
    k,n,m = map(int, input().split()) 
    # 충전기가 있는 정류장 번호 받아오기
    num = list(map(int, input().split()))
    
    charge = [0]*(n+1) #충전기 배열 생성
    #visit = [0]*(n+1)
    
    #충전기 있는 곳에 1로 표시
    for i in num:
        charge[i] = 1
        
    now = k  # 현재 발걸음 
    back = k  # 충전을 못시킬 경우 뒤로 갈 수 있는 걸음
    count = 0 # 충전횟수
      
    while True:
        if now >= n:  # 종점에 도착하면
            result = count
            break
        elif charge[now] == 1:  #충전기가 있는 곳과 현재 위치가 같을때
            back = k             
            count += 1          # 충전횟수 증가
            now +=k             # 현재 걸음 + 갈 수 있는 걸음
        elif charge[now] == 0:            # 충전소에 가지 못하면
            now -=1                #현 위치 뒤에 주유소 있는지 확인
            back -= 1              #뒤로 옮겼으니까 뒤로 가는 것도 줄어든다
            if back == 0:          # 뒤로 갈 걸음 다써버리면 
                result = 0           # 충전 못함 충전횟수 0
                break	
       
    print(f'#{test_case} {result}')

나 왜 혼자서 못짜겠냐고!!!!!

화가난다.

 

일단 오늘은 다른 사람들이 짠 코드분석 시간이다.

 

https://velog.io/@yb_engineer/Algorithm-SWEA-4831.-%EC%A0%84%EA%B8%B0%EB%B2%84%EC%8A%A4-python

 

Algorithm | SWEA 4831. 전기버스 (python)

본 문제의 저작권은 SW Expert 아카데미에 있습니다.

velog.io

이 코딩도 괜찮다.

 

댓글