๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Skill Up๐Ÿ”ฅ/Python

input(), sys.stdin.readline ์ •๋ฆฌ

by ๊ธฐ๋ฉฐ๋ˆ… 2022. 10. 31.

Python์—์„œ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์€ input()ํ•จ์ˆ˜์™€ sys ๋ชจ๋“ˆ์„ importํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(sys.stdin.readline())์ด ์žˆ๋‹ค. ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”๋”ฉ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ž…๋ ฅ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ๋Š” input๋ณด๋‹ค sys.stdin.readline์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹œ๊ฐ„์ ์œผ๋กœ ์œ ๋ฆฌํ•˜๋‹ค๊ณ  ๋‹ค๋“ค ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์™ ๋งŒํ•œ ์ฝ”๋”ฉ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ sys.stdin.readline๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์–ด๋А๋‚ , ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ input()๊ณผ sys.stdin.readline()์˜ ์ฐจ์ด์ ์ธ ๊ฐœํ–‰ ๋ฌธ์ž ์—ฌ๋ถ€์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์„ ํ•˜๋‹ค๊ฐ€ ํ•ด๋งจ์ ์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ๊ธฐํšŒ์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.


input()

  • prompt ์ธ์ž๊ฐ€ ์žˆ์œผ๋ฉด, ๊ฐœํ–‰์—†์ด ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๊ธฐ๋ก๋œ๋‹ค.
  • input() ์œผ๋กœ ๋ถ€ํ„ฐ ๋ฐ›์€ ์ž…๋ ฅ์˜ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ๋ฒ—๊ฒจ์„œ(stripping) ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • EOF(End of file)์ด ์ฝํ˜€์ง€๋ฉด, EOFError๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 

EOF(End of file)์ด๋ž€?

ํŒŒ์ผ์˜ ๋์„ ์˜๋ฏธํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋” ์ด์ƒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. C์–ธ์–ด์—์„œ๋Š” EOF๋Š” -1์ด๋ผ๋Š” ์ƒ์ˆ˜๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

์ฆ‰, input์€ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์˜ ๊ฐœํ–‰(์ค„๋ฐ”๊ฟˆ) ๋ฌธ์ž๋ฅผ ์‚ญ์ œ์‹œ์ผœ์„œ ๋ฐ›์•„์˜จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ธฐ์กด์˜ ๋ฌธ์ž์—ด์—์„œ ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์‚ญ์ œ์‹œํ‚ค๋Š” ์ž‘์—…์„ ์ทจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ๊ฒƒ์ด๋‹ค.


sys.stdin.readline

sys ๋ชจ๋“ˆ์€ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ์ด๋‹ค. 

stdin ์€ sys ๋ชจ๋“ˆ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ ๊ฐ์ฒด์ด๊ณ  ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด,

  • stdin ์€ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ํ‘œ์ค€ ์ž…๋ ฅ์— ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ๊ฐ์ฒด
  • readline() ์€ ํŒŒ์ผ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜๋กœ read(), readlines() ์™€ ๊ฐ™์ด ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ์ฝ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

sys.stdin.readline() ์€ sys ๋ผ๋Š” ๋ชจ๋“ˆ์˜ ํŒŒ์ผ ๊ฐ์ฒด stdin ์˜ ๋ฉ”์†Œ๋“œ ์ค‘ readline() ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. readline() ์€ ์ž…๋ ฅ์„ ์ฝ์„ ๋•Œ ํ•œ ๋ฒˆ์— ํ•œ ์ค„์”ฉ ์ฝ๋Š”๋ฐ, ์ด ๋ง์€ ์—ฌ๋Ÿฌ ์ค„์˜ ์ž…๋ ฅ์ด ์žˆ์„ ๋•Œ ํ•œ ์ค„์„ ์ฝ๊ณ  ๋‚˜๋ฉด ๊ทธ ๋‹ค์Œ ์ค„์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

์ฆ‰, sys.stdin.realine์€ ๊ฐœํ–‰(์ค„๋ฐ”๊ฟˆ) ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ input๋ณด๋‹ค ์†๋„๋ฉด์—์„œ ๋น ๋ฅด๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ •๋ฆฌํ•˜์ž๋ฉด, ์ž…๋ ฅ์ˆ˜๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ๋ฌธ์ œ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ์—๋Š” sys.stdin.readline์„ ์“ฐ๋Š”๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์—์„œ๋Š” input์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.