1. 3003번
1) 문제
2) 풀이
3) 문법 및 풀이과정
- List(리스트) 와 int()
list는 대괄호 [ ] 와 쉼표를 이용하여 숫자 모음을 간단하게 표현할 수 있다.
리스트는 어떤 자료형도 포함할 수 있으며, 심지어 비어있는 것도 가능하다.
리스트는 인덱스를 통해 각 자리 숫자를 가리키고 표현할 수 있으며 가장 앞 숫자는 0부터 시작하여 뒤로 갈 수록 1씩 증가한다.
즉, 위의 chessnum 리스트를 예로 들자면 , chessnum[0] = 1/ chess[1]=1 / chess[2] = 2 ... 와 같이 리스트의 각 요소에 인덱스가 붙는다. 반대로 chessnum[-1]은 가장 오른쪽에 있는 요소부터 시작한다.
chessnum = list[1,1,2,2,2,8] 로 지정했더니 typeError가 발생했다. map은 각 요소를 지정된 함수로 처리해주는 함수이다. map(함수, 요소) 와 같은 형식으로 입력해야 한다.
따라서 list 내의 각 항목들을 int로 바꿔주기 위해서는 list(map(int,[a,b,c .. ]))와 같이 입력하면 된다.
튜플도 이와 비슷한 양식으로 입력하면 각 요소 하나하나를 정수로 저장할 수 있다.
뿐만 아니라 30번째 줄과 같이 input().split()을 활용하면 입력받은 값을 정수 형태로 리스트에 저장할 수 있다.
이때 입력 값은 한 줄로 띄어쓰기로 구분된 숫자를 각각의 객체로 보고 list에 저장된다.
혹은 int를 map을 통해 사용하지 않고 print(int(chessnum[i]) - int(a[i]), end = " " )와 같이 표현해도 결과는 동일하다.
- for (반복문)
- end = " "
문제에서 요구한 결과는 결과값의 숫자들을 공백을 사이에 두고 한 줄로 출력해야 했다. 하지만 for문에서 end=" " 없이 그냥 입력을 하게 되면 한 줄이 아니라 각 숫자가 다른 줄로 결과값이 출력됐다. 그 이유는 파이썬의 print는 기본적으로 출력값 끝에 \n을 붙이기 때문이라는 것을 알게됐다. 따라서 for문의 i가 반복될 때마다 print가 되고 이 때, 다음 줄에 출력이 되는 것이다.
end는 print 값 끝에 출력되는 \n 대신 입력될 값을 지정하는 함수이다. 따라서 end = " " 로 큰 따옴표 내에 띄어쓰기를 한 번 하고 입력하면, for문의 print가 실행된 후에도 다음 줄로 넘어가지 않고 한칸 띄어쓴 후 다음 인덱스로 넘어가기 때문에 결과값이 한 줄에 공백을 두고 나오게 할 수 있다.
2. 10430번
1) 문제
2) 풀이
3) 문법 및 풀이과정
- sep
end와 비슷한 형식으로 사용되는 함수이다. end 는 print 뒤에 기본적으로 붙는 \n을 뒤의 큰따옴표 내의 내용으로 바꿔주는 함수 였다면, sep는 print되는 각 요소들 사이에 큰 따옴표 안에 있는 값을 입력하는 함수이다.
위 예제에서 sep = "\n"을 입력했으므로 결과가 출력되는 각 값 사이에 줄바꿈이 입력되어 결과가 각각 다른 줄로 출력된다. 이 함수를 사용하지 않고, 각 줄마다 새로 print를 입력하여 원하는 값이 출력되도록 해도 문제는 없다.
다만 매번 print를 반복적으로 입력해야 하는 번거로움이 발생하므로 sep함수를 활용하는 것이 효율적으로 보인다.
'Learning-log > Algorithm 문풀' 카테고리의 다른 글
백준(파이썬) - 1330번 두 수 비교하기(2022.10.13) (0) | 2022.10.19 |
---|---|
백준(파이썬,python) - 2588번, 10171번, 10172번, 25083번 (2022.10.13~14) (0) | 2022.10.19 |
백준 - 9012번. 스택 괄호 짝맞추기(python) (2022.10.3~) (0) | 2022.10.13 |
백준 - 10926번, 18108번 (python) (2022. 10. 3~) (0) | 2022.10.13 |
백준 문제풀이 - 1000번, 1001번, 1008번, 10998번, 10869번 사칙연산(파이썬, 2022.10.01 기록) (0) | 2022.10.10 |