LoginSignup
0
0

More than 3 years have passed since last update.

はじめに

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の考えを用いました。

test.py
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)という風になります。

終わりに

文字コードについてはいろいろとあるので勉強してみると面白いですね!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0