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

C-log

๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : str, list๋กœ ๋งŒ๋“ค๊ธฐ์™€ count(), index() ์‘์šฉ ๋ณธ๋ฌธ

๐Ÿง Algorithm/Baekjoon๐Ÿ’ก

๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : str, list๋กœ ๋งŒ๋“ค๊ธฐ์™€ count(), index() ์‘์šฉ

4:Bee 2023. 12. 28. 18:49
728x90

์ด ๊ธ€์€ ๋‹ค๋ฅธ ์ค‘๊ฐ„์ ๊ฒ€ ์‹œ๋ฆฌ์ฆˆ ํฌ์ŠคํŒ…๊ณผ๋„ ์—ฐ๊ด€์ด ์žˆ๊ฒ ์ง€๋งŒ  '๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : ๊ฐ•์ œํ˜•๋ณ€ํ™˜ ๊ณผ list ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด(str)' ํฌ์ŠคํŒ…๊ณผ ๋งค์šฐ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋œ ํฌ์ŠคํŒ…์ด๋‹ค.

์ด์ „์—” str๊ณผ list๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์ด๋“ค๋กœ ๊ฐ•์ œํ˜•๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ๋ฐฐ์› ๋‹ค. ์ง€๊ธˆ์ฏค์ด๋ฉด ์–ด๋Š์ •๋„ for๋ฌธ์œผ๋กœ ํŠน์ • list๋‚˜ str์„ ๋ณธ์ธ์ด ์„ค์ •ํ•œ ๋ณ€์ˆ˜('i','_' ๋“ฑ)์— ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ต์ˆ™ํ•ด์ ธ ์žˆ์„ ๊ฒƒ์ด๋ผ ๋ณธ๋‹ค. ์ด๋ฒˆ์—๋Š” str๋กœ ์ •์˜๋œ ๋ณ€์ˆ˜๋ฅผ for๋ฌธ์œผ๋กœ ๋Œ๋ ค์„œ index๊ฐ’์„ ํ™•์ธํ•ด๋ณด๊ณ  ๋ฌธ์ œ์ ์ด ๋ฌด์—‡์ด๊ณ  ์ด ๋‹ค์Œ์— ๋ฌด์—‡์„ ํ•ด์•ผ ์ข‹์„์ง€ ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ๋กœ ํ•˜์ž.

N = '1 2 3 4 5'
 
for i in n:  # list์˜ ๋ชจ๋“  element๋ฅผ i๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    print(i)
# for ๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ i๋กœ ๋ฐ˜ํ™˜ ๋ฐ›์€ element๋“ค์˜ index๊ฐ’์„ ์ƒˆ๋กœ ๋ฐ›์•„ ๋ณผ ๊ฒƒ.
New_n = []  # index ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” list์˜์—ญ
for i in n:
    print(i, end=" ")  # i type is str
    # ์˜ˆ์ƒ์€ [0,1,2,3,4]๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ [0, 2, 4, 6, 8]๊ฐ€ ๋‚˜์˜จ๋‹ค.
    # ๊ทธ ์ด์œ ๋Š” N = '1 2 3 4 5'์—์„œ space์˜์—ญ์„ ํฌํ•จํ•ด์„œ ๊ฐ’์„ ๋น„๊ต ๋ถ„์„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    # ๋”ฐ๋ผ์„œ str์„ list๋กœ ์žฌ๊ฐ€๊ณต์„ ํ•˜๊ฑฐ๋‚˜ split์ด๋‚˜ replace๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.
    New_n.append(N.index(i))
print(New_n)
 
1 2 3 4 5  # ์ฒซ ๋ฒˆ์งธ for๋ฌธ์˜ print()
1 2 3 4 5   # ๋‘ ๋ฒˆ์งธ for๋ฌธ์˜ print()  
[0, 2, 4, 6, 8]  # index๋กœ ์ €์žฅ๋œ New_n list์˜ ๋งˆ์ง€๋ง‰ print()

๋‘๋ฒˆ์งธ for๋ฌธ๋ถ€ํ„ฐ ํ™•์ธํ•ด ๋ณด๋ฉด print๊ฐ€ 0,1,2,3,4๋กœ ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒ ํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ ‡์ง€ ๋ชปํ–ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” N์˜ ๋ณ€์ˆ˜์— str์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š”๋ฐ ๋‹น์—ฐํžˆ list์ฒ˜๋Ÿผ ๊ตฌ๋ถ„์ด ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๊ณต๋ฐฑ(space)๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ list๋กœ ๊ฐ€๊ณต์„ ํ•ด์•ผํ•œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์žฌ์ •์˜ ํ•œ ์ฝ”๋“œ์ด๋‹ค.

N = '1 2 3 4 5'
 
N = N.split()
New_n = []
for i in N:
    New_n.append(N.index(i))

print(New_n)
 
[0, 1, 2, 3, 4]   # ์œ„์—์„œ ํ™•์ธ๋œ ๊ฒฐ๊ณผ์™€ ๋‹ค๋ฅธ๋‹ค.

์ฒ˜์Œ์— ๋„์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ’๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ์— ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒฐ๊ณ  ๊ฐ’์„ ๋„์ถœํ•ด ๋ƒˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์กฐ๊ธˆ ๋” ๊ธด ๋ฌธ์žฅ์„ ์‘์šฉํ•ด ๋ณด์ž.

N = 'ObjectOrientedProgramming1 3.0 A+'
 
N = N.split()
New_n = []
for i in N:
    print(i, end=' / ')
    New_n.append(i)

print(New_n)
 
ObjectOrientedProgramming1 / 3.0 / A+ / 
['ObjectOrientedProgramming1', '3.0', 'A+']

์ด๋ ‡๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค. ์ฆ‰ ๊ฐ ๋‹จ์–ด๋“ค์„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ for๋ฌธ i๋กœ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  New_n์ด๋ผ๋Š” list์— ๊ฐ’์„ ๋„ฃ์€ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ in ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์ž.

N = 'ObjectOrientedProgramming1 3.0 A+'
if N in 'A+':
    print('exit')
TypeError: 'in <string>' requires string as left operand, not list

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ–ˆ์„ ์‹œ์—๋Š” in์˜ ๋ฌธ๋ฒ•์˜ ๊ธฐ์ค€์„ ์ž˜ ๋ชป์•Œ ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. โœจ ์™ผ์ชฝ์— ํ”ผ์—ฐ์‚ฐ์—๋Š” list๋‚˜ str์ธ ๋ฌธ์ž์—ด๋กœ๋Š” in์„ ํ™•์ธ์ด ํž˜๋“ค๋‹ค. ( โœจ ๋‚ด๊ฐ€ ์ž์ฃผ ์‹ค์ˆ˜ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. in์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด์•ผํ•œ๋‹ค. ์ฆ‰, ๊ธฐ์ค€์ด ์™ผ์ชฝ์— ์žˆ๋‹ค.) ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ ์ •์˜ํ•œ New_n์€ ์ ์šฉ์ด ๋ ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์œ„์˜ ์—ฐ์‚ฐ ๋ชจ์Šต ๊ทธ๋Œ€๋กœ ์ž‘์„ฑ์„ ํ•œ๋‹ค๋ฉด New_n๊ฐ€ ๊ธฐ์ค€์ด ๋˜์ง€ ์•Š๊ณ  ๋น„๊ตํ•˜๋Š” ๋Œ€์ƒ์ด๊ธฐ์— ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ์ˆ˜์ •๋œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

N = 'ObjectOrientedProgramming1 3.0 A+'
 
if 'A+' in N#  ์ˆ˜์ •๋œ ๊ตฌ๊ฐ„์ด๋‹ค.
    print('exit')
 
exit

๊ทธ๋ ‡๋‹ค๋ฉด New_n์€ ์–ด๋–จ๊นŒ?

N = 'ObjectOrientedProgramming1 3.0 A+'
N = N.split()
 
New_n = [] 
if 'A+' in New_n:
    print('exit')
 
exit

์–ด๋ ค์›€ ์—†์ด ์ž˜ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค. ์ด์ œ๊นŒ์ง€๋Š” ์ „์ฒด์ ์ธ ๋ฐฐ์—ด์—์„œ in์„ ํ™•์ธํ–ˆ์ง€๋งŒ ์ด์ œ for๋ฌธ์„ ๋Œ๋ ค์„œ ํ™•์ธํ•ด๋ณด์ž.

for i in New_n:
    if 'A+' in i:
        print('exit')
exit

์ด๋ ‡๊ฒŒ ํ™•์ธ๋œ ๊ฐ’์˜ ์œ„์น˜๊นŒ์ง€ ํ™•์ธํ•ด๋ณด์ž. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

New_n = []
 
for i in N:
    New_n.append(i)
 
print(New_n)
 
for i in New_n:
    if 'A+' in i:
        print('exit')
        print(New_n.index(i))
 
['ObjectOrientedProgramming1', '3.0', 'A+']
exit
2

์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋Š” ์œ„์™€ ๊ฐ™๋‹ค. index๋ฅผ ํ†ตํ•ด์„œ A+๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ if๋ฌธ์œผ๋กœ ํ™•์ธํ•˜๊ณ  ๋ฐ˜ํ™˜๋ฐ›์€ i๋ฅผ ๊ธฐ์ค€์œผ๋กœ index๊ฐ€ ์–ด๋””์žˆ๋Š”์ง€ ํ™•์ธ๊นŒ์ง€ ํ–ˆ๋‹ค. ํ•ด๋‹น A+์ด ์กด์žฌํ•˜๋Š” index๋Š” New_n์˜ 2๋ฒˆ์งธ์ด๋‹ค.


โœจ ์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ N์—์„œ ์„ค์ •ํ•œ ๊ธด๋ฌธ์žฅ์„ a~z๊นŒ์ง€์˜ ์•ŒํŒŒ๋ฒณ๋“ค์ด ๋ช‡๊ฐœ์žˆ๋Š”์ง€ ์–ด๋””์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์ดํ›„ ์„ ํƒ๋˜์ง€ ์•Š์€ ๋Œ€๋ฌธ์ž๋‚˜ ๊ธฐํ˜ธ๋“ค์„ ์ฒ˜๋ฆฌํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

๋จผ์ € a์—์„œ z๊นŒ์ง€์˜ list๋ฅผ ์ƒ์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

n = 'ObjectOrientedProgramming1 3.0 A+'
Alp = []
for _ in range(ord('a'), ord('z')+1):
    Alp.append(chr(_))

print(Alp)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์•ŒํŒŒ๋ฒณ์„ cnt๋ผ๋Š” ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ฐ ์•ŒํŒŒ๋ฒณ์ด n์— ๋ช‡๊ฐœ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

 
n = 'ObjectOrientedProgramming1 3.0 A+'
 
Alp = []
cnt = []  # ์ถ”๊ฐ€๋œ cnt ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜
#์•ŒํŒŒ๋ฒณ ์ƒ์„ฑ๊ธฐ
for _ in range(ord('a'), ord('z')+1):
    Alp.append(chr(_))
 
for i in Alp:  # Alp์˜ element๋ฅผ i๋กœ ๋ฐ˜ํ™˜
 
    if i in n: #i๊ฐ€ n์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด๋ฌธ
        print(f"{i} : {Alp.count(i)}", end=" ")
    else:
        print(f"{i} : {0}", end=" ")
 
print()
print(Alp)
 
a : 1 b : 1 c : 1 d : 1 e : 1 f : 0 g : 1 h : 0 i : 1 j : 1 k : 0 l : 0 m : 1 n : 1 o : 1 p : 0 q : 0 r : 1 s : 0 t : 1 u : 0 v : 0 w : 0 x : 0 y : 0 z : 0
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

Alp๋ฅผ ๊ธฐ์ค€์œผ๋กœ if ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์–ด๋–ค ์•ŒํŒŒ๋ฒณ์ด ๋ช‡๊ฐœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ด๊ฒƒ๋“ค์œผ cnt๋ผ๋Š” ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜์— ๋‹ด์•„๋‘๊ณ  ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ’๋“ค์€ n์„ ๊ธฐ์ค€์œผ๋กœ except๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„ index๋กœ ์–ด๋–ค ๊ฐ’์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

 
n = 'ObjectOrientedProgramming1 3.0 A+'
Alp = []
cnt = []  # ์ถ”๊ฐ€๋œ cnt ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜
exit_cnt = []
ex = []
# ์•ŒํŒŒ๋ฒณ ์ƒ์„ฑ๊ธฐ
for _ in range(ord('a'), ord('z')+1):
    Alp.append(chr(_))
for i in Alp:  # Alp์˜ element๋ฅผ i๋กœ ๋ฐ˜ํ™˜
    if i in n:  # i(n)๊ฐ€ n์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด๋ฌธ
        print(f"count : {i} : {n.count(i)}", end=" ")
        exit_cnt.append(i)
        cnt.append(n.count(i))
    else:  # i(n)์— ์—†๋Š” ์•ŒํŒŒ๋ฒณ๋“ค
        print(f"except : {i} : {Alp.index(i)}", end=" ")
        ex.append(Alp[Alp.index(i)])  # ์—†๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์„ Alp๋ฆฌ์ŠคํŠธ index๋กœ ์ €์žฅ

print()
print()
print(Alp)
print(f"exit lis is : {exit_cnt}")
print(f" cnt lis is : {cnt}")
print(f"except lis is : {ex}")
 
count : a : 1 count : b : 1 count : c : 1 count : d : 1 count : e : 3 except : f : 5 count : g : 2 except : h : 7 count : i : 2 count : j : 1 except : 
k : 10 except : l : 11 count : m : 2 count : n : 2 count : o : 1 except : p : 15 except : q : 16 count : r : 3 except : s : 18 count : t : 2 except : u : 20 except : v : 21 except : w : 22 except : x : 23 except : y : 24 except : z : 25

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
exit list is : ['a', 'b', 'c', 'd', 'e', 'g', 'i', 'j', 'm', 'n', 'o', 'r', 't']
 cnt list is : [ 1,  1,  1,  1,   3,  2,  2, 1,  2,   2,   1,  3, 2]
except list is : ['f', 'h', 'k', 'l', 'p', 'q', 's', 'u', 'v', 'w', 'x', 'y', 'z']
 

๊ฒฐ๊ณผ๊ฐ€ ์กฐ๊ธˆ์€ ๋ณด๊ธฐ ์–ด๋ ต์ง€๋งŒ ํ™•์‹ค ํ•œ๊ฒƒ์€ ์ฒซ๋ฒˆ์งธ ๊ฒฐ๊ณผ ์ค„์€ count๋Š” ์กด์žฌํ•˜๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์ด๊ณ  except๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์ด๋‹ค. exit list๋Š” ์กด์žฌํ•˜๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์ด๊ณ  cnt๋Š” ์กด์žฌํ•˜๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์˜ ๊ฐฏ์ˆ˜๊ณ ์ด๋ฉฐ except list๋Š” ์กด์žฌํ•˜์ž ์•Š๋Š” ์•ŒํŒŒ๋ฒณ๋“ค์˜ list์ด๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ if๋ฌธ์˜ ์กฐ๊ฑด๋ฌธ์„ ์–ด๋–ป๊ฒŒ ์ž˜ ์‚ฌ์šฉํ•˜๋ƒ์— ๋”ฐ๋ผ์„œ ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ž์—ด์˜ ๊ฐ’์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ str์˜ ๋ฌธ์ž์—ด์„ list๋กœ ๊ฐ€๊ณต ํ•ด์•ผํ•  ๋•Œ ์žฌ์ •์˜ ํ•ด์„œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  in ๋น„๊ต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•ญ์ƒ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋ฐฉํ–ฅ์ธ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์ด ์•„๋‹Œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค.

728x90

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

๐Ÿ’ก5597๋ฒˆ  (0) 2023.12.29
๐Ÿ’ก1181๋ฒˆ  (0) 2023.12.29
๐Ÿ’ก2941๋ฒˆ  (0) 2023.12.27
๐Ÿ’กโœจ์ค‘๊ฐ„์ ๊ฒ€ : set()๊ณผ count()  (0) 2023.12.26
๐Ÿ’ก1157๋ฒˆ  (0) 2023.12.26
Comments