초보자를 위한) 파이썬으로 백준 풀때 알아두면 좋은 꿀팁

본 가이드는 성능 고려 없이 쉽게 짜는 방법에만 촛점을 두엇읍니다.

숫자 12345 를 [1, 2, 3, 4, 5] 로 쉽고 빠르게 변환하는법

먼저 str 함수를 이용해 12345를 "12345"로 변환한다.

x = 12345
xStr = str(x) # "12345"

그 후 "12345"를 [“1”, “2”, “3”, “4”, “5”] 로 변환한다.

xStrLst = list(xStr)

그 후 [“1”, “2”, “3”, “4”, “5”] 를 [1, 2, 3, 4, 5]로 변환한다.

xIntLst = [int(i) for i in xStrLst] 

근데 설명을 쉽게 하기 위해 [“1”, “2”, “3”, “4”, “5”] 를 쓴거고, 파이썬에선 xStr 자체도 iterable 하기 때문에

[int(i) for i in xStr] 

이렇게 바로 해줘도 된다.

얘들을 모두 요약하면

xIntLst = [int(i) for i in str(x)]

한줄로 정리 가능 ㅇㅇ

반대로, [1, 2, 3, 4, 5] 를 12345로 바꾸는 방법

우선 [1, 2, 3, 4, 5]를 [“1”, “2”, “3”, “4”, “5”] 로 바꿔준다.

xIntLst = [1, 2, 3, 4, 5]
xStrLst = [str(i) for i in xIntLst] # 혹은 list(map(str, xIntLst))

그 다음 [“1”, “2”, “3”, “4”, “5”] 를 "12345"로 바꿔준다.

xStr = "".join(xStrLst)

그 다음 "12345"를 12345로 바꿔준다.

x = int(xStr)

얘들을 요약하면

x = int("".join(str(i) for i in xIntLst))

정도로 표현할 수 잇다.

“1 2 3 4 5” 를 [1,2,3,4,5] 로 만드는 법

x = "1 2 3 4 5"
y = [int(i) for i in x.split()]

[1, 2, 3, 4, 5] 를 “1 2 3 4 5” 로 만드는 법

x = [1, 2, 3, 4, 5]
y = " ".join(str(i) for i in x)

대충 list(), int(), str(), [for in], ‘’.join() 을 잘 쓰면 무서울 게 없다.

자 그럼 백준 화이팅!

6 Likes

저는 List comprehension을 별로 안좋아해서, map을 사용해 작성해 보았읍니다, , ,

  • 숫자 12345 를 [1, 2, 3, 4, 5] 로 쉽고 빠르게 변환하는법
xIntLst = list(map(int, str(x)))
  • [1, 2, 3, 4, 5] 를 12345로 바꾸는 방법
x = int("".join(map(str, xIntLst)))
  • “1 2 3 4 5” 를 [1,2,3,4,5] 로 만드는 법
y = list(map(int, x.split()))
  • [1, 2, 3, 4, 5] 를 “1 2 3 4 5” 로 만드는 법
x = " ".join(map(str, y))

:+1:

6 Likes

n 을 입력 받는 법

n = int(input())

n, m 을 입력 받는 법

n, m = map(int, input().split())

n, array 를 입력 받는 법

n, *array = map(int, input().split())
6 Likes

감사합니다
백준풀며 딴짓할때 유용하게 써먹겠읍니다:grinning:

자바스크립트로 하면 더 간단하게 할 수 있읍니다?

[..."12345"].map(c => +c);
+[1,2,3,4,5].join('');
"1 2 3 4 5".split(' ')
           .map(c => +c);
[1,2,3,4,5].join(' ');

아유 깔끔하다

C#으로도 해볼까요

"12345".Select(c => (int)(c - '0'));
int.Parse(
    string.Join(string.Empty, new int[] { 1, 2, 3, 4, 5 }));
"1 2 3 4 5".Split(' ')
           .Select(s => int.Parse(s));
string.Join(' ', new int[] { 1, 2, 3, 4, 5 });

다이내믹 타입 언어들은 못따라가겠읍니다,,,,

4 Likes

C#으로 저렇게… ㄷㄷㄷ
파이썬 끼적거리고 있을때가 아니군요…

julia> parseInt(x) = parse(Int, x)
parseInt (generic function with 1 method)

julia> parseInt.((collect ∘ string)(12345))
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

julia> (parseInt ∘ join)([1, 2, 3, 4, 5])
12345

julia> parseInt.(split("1 2 3 4 5"))
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

julia> join([1, 2, 3, 4, 5], ' ')
"1 2 3 4 5"
1 Like