20221114 모각코 6회 알고리즘 마스터(파이썬)

2022. 11. 15. 23:07카테고리 없음

안녕하세요 알고리즘 마스터입니다(아님)

마지막 모각코라니...

진짜 아쉽다...

 

저는 파이썬이랑 아직도 낯가립니다 처음 배운게 고3때인데... 뭐 그땐 print밖에 몰랐지만

아무튼 오래됐는데도 여전히 아리송한 언어

 

파이썬으로 (과제로 나온) 알고리즘 문제를 풀어볼게요

문제 푸는데 쓰이는 문법 위주로 써보겠음

 

알고래뿌는 문제 돌려쓰는 것 같기 때문에

(교수님을 위해서) 코드 전체를 적진 않겠습니다

근데 다 이거 보면 다 짤 수 잇긴하다..

 

 

 

[테스트 케이스]

testcase = int(input())

while(testcase > 0):

	...

    testcase -= 1

테케 몇번 돌릴지 적는 코드

c++로 짤 때는 항상 for문 썼는데 파이썬 for문은.. 진짜 정이 안감

그래서 그냥 while 쓴다

일단 그냥 쭉 짜고 테케 다 맞으면 마지막에 추가해주는 코드

 

 

 

[행렬 덧셈]

row, column = map(int, input().split())

이것은.. 파이썬 문법을 몰라서 못푸는 경우가 많을 것 같음 (나)

행과 열의 개수를 같은 줄에 두 개의 값을 1 2 이런식으로 입력한다고 하면

공백을 기준으로 row랑 column에 각각 할당해줌

만약에 1 이나 1 2 3 처럼 개수가 안맞으면 오류남

잊지말아야겠다

 

list1 = []

list1.append(list(map(int, input().split())))

리스트 안에 여러개의 값을 (리스트로) 넣는 방법!

아까 전의 경우에는 딱 정해진 개수만큼 값을 넣는데

행렬을 만들때는 그 안에 몇 개 들어갈지 나중에 정해줌

그걸 미리 알지 못하기 때문에 a, b, c, d, e, = map(...) 이렇게 짤 수 없잖음

여러개의 값은 map함수와 리스트로 관리해주면 된다

 

list1[i][j] 이런식으로 접근할 수 있어서 행렬 계산 하는 게 편함

 

 

 

[리스트 안에 있는 값을 2x3으로 정렬]

list3 = [20, -1, 58, 20, 41, 22]

print(list3)을 하면 대괄호 안에 숫자들이 일렬로 출력됨

나는 행렬마냥

20 -1 
58 20 
41 22

이렇게 출력해주고 싶음

for r in range(rnum):
    for t in range(tnum):
        print(list3[(r*tnum)+t], end=" ")
    print("")

너무 무지성으로 코드 복붙하신거 아닌가요?

네 맞아요 설명해드릴게요

 

2x3의 경우에서

인덱스를 보면

list[0]          list[1]

list[2]          list[3]

list[4]          list[5]

이렇게 쓸 수 있죠?

 

이건

list[0+0]     list[1+0]

list[0+2]     list[1+2]

list[0+4]     list[1+4]

이렇게도 말할 수 있음 (여기서 2는 한줄에 2개씩이니까 2, 4는 2 x 2)

 

아하 이중 for문을 사용해서

0 1 0 1 0 1 이 나오는 값이랑

+0 +2 +4가 나오는 값을 이렇게 저렇게 하면 되겠구나

라는 것을 알 수 있음

 

[(r * tnum) + t]

(r * tnum) 가 내 코드에선 0 1... 이 나오고

t 가 0... 2... 4... 이렇게 나옴

 

물론 이거보다 더 쉬운 방법도 있을 수 있겠지만

시험장에서 이와 같은 응용을 얼마든지 생각해낼 수 있다는 것에 의의를 둡니다.

 

다들 쉽다하는 것도

저한텐 넘 어렵네요.. 흑흑

더 노력하는 사람이 되겠습니다 아자아자