๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : ๊ฐ•์ œํ˜•๋ณ€ํ™˜ ๊ณผ list ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด(str) ๋ณธ๋ฌธ

๐Ÿง Algorithm/Baekjoon๐Ÿ’ก

๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : ๊ฐ•์ œํ˜•๋ณ€ํ™˜ ๊ณผ list ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด(str)

4:Bee 2023. 12. 23. 19:32
728x90

str์˜ ๋ฐฐ์—ด list์™€ list๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ์žˆ์–ด์„œ ๋งŽ์€ ํ˜ผ๋™์ด ์žˆ์–ด์„œ ์ค‘๊ฐ„์ ๊ฒ€์œผ๋กœ ์ด๋ ‡๊ฒŒ ๊ธ€์„ ์จ๋ณธ๋‹ค. ์šฐ์„  ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ intํƒ€์ž…์„ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐฉ๋ฒ•๊ณผ str์„ ์ž…๋ ฅ๋ฐ›์•„ for๋ฌธ์„ ํ†ตํ•ด์„œ ํ•ด๋‹น ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•ด๋ณด๊ฒ ๋‹ค.

*์šฐ์„  intํƒ€์ž…์œผ๋กœ ์ž…๋ ค๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

intํƒ€์ž…์„ mapํ•จ์ˆ˜๋กœ list๋กœ ๋งŒ๋“ค์–ด input์œผ๋กœ ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. ์—ฌ๊ธฐ์„œ '_'๋Š” intํƒ€์ž…์œผ๋กœ N์˜ ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค. (์ฐธ๊ณ ๋กœ range๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ range๋กœ ๋ฐ›์œผ๋ ค๋ฉด intํƒ€์ž…์œผ๋กœ lenํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.)

N = list(map(int, input()))
print(N, type(N), type(N[0]))  # N์€ list๋กœ ๋ฐ˜ํ™˜๋˜๊ณ  N[0]์ธ list์š”์†Œ๋Š” int๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
for _ in N:
    print(_, end=" ")
 
1234
[1, 2, 3, 4] <class 'list'> <class 'int'>
1 2 3 4 #<- int ํƒ€์ž…์ด๋‹ค.
 

<๐Ÿ’กโœจ๋‹จ์ผ int๋กœ๋งŒ for๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ๋ฐ ์‘์šฉ์€ ์•„๋ž˜ ๋”๋ณด๊ธฐ ํ™•์ธ>

๋”๋ณด๊ธฐ

 

*๋‹จ์ผ int๋กœ๋งŒ for๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ

 
N = int(input())
for _ in N:
    print(_, end=" ")
 
123
Traceback (most recent call last):
  File "d:\myclass\0_python\Python\algo\my_Algo\memo_2.py", line 2, in <module>
    for _ in N:
TypeError: 'int' object is not iterable
 

์ด๋ ‡๊ฒŒ ์ž‘์ƒํ•˜๋ฉด for๋ฌธ์ด ํ•œ๋ฒˆ์ด๋ผ๋„ ์ž‘๋™ํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. N์€ ๋‹จ์ˆœํžˆ '_'์— N์„ ๋Œ€์ž…ํ•  ๋ฟ for๋ฌธ์˜ ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ฆ‰, rangeํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฒ”์œ„๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜ ์—†์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 
N = input()
for _ in N:
    print(_, end=" ")
ABC
A B C
<class 'str'> <class 'str'> <class 'str'> 
 
123
1 2 3 
<class 'str'> <class 'str'> <class 'str'> 
 

 N์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ›๋Š”๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. N์€ ๋ฌธ์ž์—ด์ผ ๋•Œ for _ in ์—์„œ ๋‹จ์ผ N์ด ์‚ฌ์šฉํ•˜๋ฉด '_'์˜ ๋ณ€์ˆ˜๋Š” str๋กœ ์ธ์‹ํ•œ๋‹ค.

 
N = input()
for _ in range(len(N)):
    print(_, end=" ")
ABC
0 1 2
<class 'int'> <class 'int'> <class 'int'> 
 

N์„ int๋กœ ๋ฐ›์œผ๋ ค๋ฉด ์œ„์™€ ๊ฐ™์ด range๋ฅผ len์œผ๋กœ ์„ค์ •ํ•ด์„œ ์ˆซ์ž์˜ ๋ฐ˜ํ™˜๊ฐ’์„ '_'์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„  '_'์˜ ๋ณ€์ˆ˜ ํƒ€์ž…์€ int์ด๋‹ค. ์ฆ‰, N์€ ๋ฌธ์ž์—ด์ผ ๋•Œ for _ in ์—์„œ ๋‹จ์ผ N์ด ์‚ฌ์šฉํ•˜๋ฉด '_'์˜ ๋ณ€์ˆ˜๋Š” str๋กœ ์ธ์‹ํ•œ๋‹ค. 

์œ„์˜ input์„ ํ˜•๋ณ€ํ™˜ int๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•  ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š”๋‹ค.

 
N = int(input())
for _ in range(N):
    print(_, end=" ")
 
123
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
 

์—ฌ๊ธฐ์„œ N = int(input())์€ N์œผ๋กœ ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์ด ํ•˜๋‚˜์˜ int๋กœ ํ˜•๋ณ€ํ™˜(์ธ์‹)๋˜๋ฉฐ '123'์€ ๊ฐ๊ธฐ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ 123์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ์ˆซ์ž๋กœ ์ธ์‹ํ•˜๊ณ  range(N)์€ 0์—์„œ ๋ถ€ํ„ฐ 123๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ์ •ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, index๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

 

*strํƒ€์ž…์„ ์ž…๋ ฅ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

# ๋ฌธ์ž์—ด์€ list๋กœ ๋ฐ˜ํ™˜๋˜๊ณ  ๊ตฌ์„ฑ์ด๋˜๊ธฐ ๋•Œ๋ฌธ์— list๋ฅผ ์ „ํ™˜ํ•  ํ•„์š” ์—†๋‹ค.
N = input()
# ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’๋“ค์€ str์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ ์š”์†Œ๋“ค์„ int๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?
# ์•„๋งˆ๋„ int(N[0])์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜ํ•˜๋ฉด ๋  ๊ฒƒ๊ฐ™์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.
print(N, type(N), type(N[0]))
for _ in N:  # ์—ฌ๊ธฐ์„œ _๋Š” str์ธ ๊ฒƒ์ด๋‹ค. ์ ˆ๋Œ€๋กœ int๊ฐ€ ์•„๋‹ˆ๋‹ค ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฅผ ์—ผ๋‘ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
    print(type(_), end=" ")
 
1234
1234 <class 'str'> <class 'str'>
<class 'str'> <class 'str'> <class 'str'> <class 'str'>
 

str์€ ๊ธฐ๋ณธ์œผ๋กœ list๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์ด๊ฒƒ๋“ค์„ ์ˆซ์ž๋กœ ์ž…๋ ฅ ๋ฐ›์•˜์„ ๋•Œ์ด๋‹ค. N์˜ ๊ฐ list ์š”์†Œ๋“ค ์—ญ์‹œ str์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ์™€ ๋‹ฌ๋ฆฌ int๋กœ ๊ฐ’์„ ๋ฐ›์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ์ ์œผ๋กœ str๋กœ ์ž…๋ ฅ๋ฐ›๊ฒŒ ๊ตฌ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. for๋ฌธ์˜ '_' ์—ญ์‹œ str์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด str๋กœ ๋ฐ›์€ ์š”์†Œ๋“ค์„ int๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?

*str๋กœ ๋ฐ›์€ ๊ฐ’๋“ค์„ int๋กœ ์ „ํ™˜ํ•˜๊ธฐ

N = input()
print(N, type(N), type(N[0]))
for _ in N:
    print(type(int(N[int(_)-1])), end=" ")
 
1234
1234 <class 'str'> <class 'str'>
<class 'int'> <class 'int'> <class 'int'> <class 'int'>

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ N์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹น์—ฐํžˆ '_'์˜ ๋ณ€์ˆ˜ ํƒ€์ž…์€ str์ด๋‹ค ๊ทธ๋ž˜์„œ '_'์„ int๋กœ ์ „ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๋‹จ์ˆœํžˆ N[_]์ด๋Ÿฐ ์‹์œผ๋กœ ์š”์†Œ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ณ€์ˆ˜์˜ TypeError๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•œ N์˜ ์š”์†Œ ๊ฐ’๋“ค์€ 1~4์ด๋‹ค. ์ด๋Š” index ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ๋Š” out of range Error๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์ฆ‰, index์˜ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ ์ธ๊ฐ€๋ฐ›์€ ๊ฐ’๋“ค์˜ ๋ฒ”์œ„๋ฅผ -1์”ฉ ์ค„์—ฌ์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ int(_) ๋’ค์— -1์˜ ์ˆ˜์‹์„ ๋„ฃ์–ด ์ค˜์•ผํ•œ๋‹ค.(index์˜ list ๋ฐฐ์—ด ์š”์†Œ์˜ ์‹œ์ž‘์€ 0์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

* range๋ฅผ ์‚ฌ์šฉํ•ด์„œ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ

๋งˆ์ง€๋ง‰์œผ๋กœ range๋ฅผ ์‚ฌ์šฉํ•ด์„œ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ด๋‹ค.

N = input()
print(N, type(N), type(N[0]))
for _ in range(len(N)):
    print(type(int(N[_])), end=" ")
 
1234
1234 <class 'str'> <class 'str'>
<class 'int'> <class 'int'> <class 'int'> <class 'int'>

์—ฌ๊ธฐ์„œ N์€ str์š”์†Œ๋กœ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ•˜์ง€๋งŒ range์˜ ๊ฐ’์„ lenํ•จ์ˆ˜๋กœ N์˜ list ๋ฐฐ์—ด ์š”์†Œ ์ˆ˜๋งŒํ‹ˆ ๋ฐ›์•˜๋‹ค. ์ฆ‰, '_'์˜ ๋ณ€์ˆ˜ ํƒ€์ž…์€ int๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— '_'๋ฅผ ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜ํ•˜์ง€ ์•Š์•„๋„ ๋ฌธ์ œ ์—†์ด N์˜ list ์š”์†Œ๋“ค์„ int๋กœ ๊ฐ•์ œํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ๊ฒƒ์ด๋‹ค.

728x90

'๐Ÿง Algorithm > Baekjoon๐Ÿ’ก' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : map๊ณผ list  (1) 2023.12.23
๐Ÿ’ก2675๋ฒˆ  (0) 2023.12.23
๐Ÿ’กโœจ10809๋ฒˆ  (0) 2023.12.23
๐Ÿ’กโœจ11720๋ฒˆ  (0) 2023.12.23
๐Ÿ’ก1546๋ฒˆ  (0) 2023.12.22
Comments