##はじめに
atcoderの勉強をしていて少しためになったことをまとめたいと思います
##ASCII
みなさん文字コードについてご存知でしょうか?Wikipediaによると
文字コードとは、コンピュータなどの電子媒体において、文章を画像などの図形データとしてではなくテキストの形式で扱う場合に、その各文字(単一の文字でない場合もある)に対して持っているコードのことである。(wikipedia)
とあります。簡単に言うとコンピュータ上で文字を表現するためのルール(コード)みたいなものです。種類としては
文字コード | 用途 | 情報量 |
---|---|---|
ASCII | アルファベット、数字を表すコード | 7ビットのコード |
SJIS | 日本語を表現できるコード | 16ビットのコード |
EUC-JIS | UNIX系で日本語を表現するためのコード | 16ビットのコード |
Unicode | 世界中の文字を表すコード | 16~21コード |
UTF-8 | 一番ポピュラーなコード、ASCIIと互換性がある | 3バイト |
これくらいです。UTF-8が見たことある人が多いのではないでしょうか
##Atcoder146 B - ROT N
問題文
英大文字のみからなる文字列Sがあります。また、整数Nが与えられます。Sの各文字をアルファベット順でN個後の文字に置き換えた文字列を出力してください。ただしアルファベット順でZの1個後の文字は A とみなします。
この問題を解く際に上のASCIIの考えを用いました。
N = int(input())
S = input()
def change():
s=[]
for i in range(len(S)):
m = ((ord(S[i])-ord("A")+N) % 26)
s.append(chr(m+ord("A")))
return "".join(s)
print(change())
糞コードなのは勘弁してください(笑)ここで一番大切なのは
ord()
とchr()
の関数です。この関数はASCIIで書かれた文字や数字をあらかじめ割り当てられた数字や文字に変換してくれる関数です。[ASCIIコード]:http://www12.plala.or.jp/mz80k2/electronics/ascii/ascii.html
例えば"A"という文字はASCII文字コードによると65になります。また関数を用いると
chr("A")
という風に書きます。逆に数字をASCIIに割り当てたいならord(65)
という風になります。
##終わりに
文字コードについてはいろいろとあるので勉強してみると面白いですね!!