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... 이렇게 나옴
물론 이거보다 더 쉬운 방법도 있을 수 있겠지만
시험장에서 이와 같은 응용을 얼마든지 생각해낼 수 있다는 것에 의의를 둡니다.
다들 쉽다하는 것도
저한텐 넘 어렵네요.. 흑흑
더 노력하는 사람이 되겠습니다 아자아자