w, n = map(int, input().split())for _ in range(n): code = input().strip() row, seat = code[0], code[1] # 글자는 ord로 코드를 얻어 뺀다. 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 if "A" <= row <= "Z": r = ord(row) - ord("A") else: r = 26 + ord(row) - ord("a") s = ord(seat) - ord("0") # int(seat)와 같다. ord(seat)만 쓰면 49~57이다 print(r * w + s)
JavaScriptmain.js · 14 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const [w, n] = lines[0].trim().split(/\s+/).map(Number);const A = "A".charCodeAt(0), Z = "Z".charCodeAt(0), a = "a".charCodeAt(0), ZERO = "0".charCodeAt(0);const out = [];for (let i = 1; i <= n; i++) { const code = lines[i].trim(); const row = code.charCodeAt(0); // 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 const r = row <= Z ? row - A : 26 + row - a; // code[1]은 문자열 "7"이다. 수에 + 하면 이어 붙여지니 코드로 바꿔 뺀다 const s = code.charCodeAt(1) - ZERO; out.push(r * w + s);}console.log(out.join("\n"));
TypeScriptmain.ts · 12 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const [w, n]: number[] = lines[0].trim().split(/\s+/).map(Number);const out: number[] = [];for (let i = 1; i <= n; i++) { const code: string = lines[i].trim(); const row: number = code.charCodeAt(0); const r: number = row <= "Z".charCodeAt(0) ? row - "A".charCodeAt(0) : 26 + row - "a".charCodeAt(0); const s: number = code.charCodeAt(1) - "0".charCodeAt(0); out.push(r * w + s);}console.log(out.join("\n"));
JavaMain.java · 23 行
import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int w = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextToken()); StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { String code = br.readLine().trim(); char row = code.charAt(0); char seat = code.charAt(1); // char끼리 빼면 int다. 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 int r = Character.isUpperCase(row) ? row - 'A' : 26 + (row - 'a'); int s = seat - '0'; // seat를 그대로 계산에 쓰면 글자 코드(49~57)가 들어간다 out.append(r * w + s).append('\n'); } System.out.print(out); }}
C#Main.cs · 24 行
using System;using System.Text;class Program{ static void Main() { string[] first = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int w = int.Parse(first[0]); int n = int.Parse(first[1]); var sb = new StringBuilder(); for (int i = 0; i < n; i++) { string code = Console.ReadLine().Trim(); char row = code[0]; char seat = code[1]; // char끼리 빼면 int다. 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 int r = char.IsUpper(row) ? row - 'A' : 26 + (row - 'a'); int s = seat - '0'; // char.GetNumericValue(seat)도 되지만 double을 돌려준다 sb.Append(r * w + s).Append('\n'); } Console.Write(sb); }}
C++main.cpp · 17 行
#include <iostream>#include <string>int main() { std::ios::sync_with_stdio(false); int w, n; std::cin >> w >> n; for (int i = 0; i < n; i++) { std::string code; std::cin >> code; char row = code[0], seat = code[1]; // 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 int r = (row >= 'A' && row <= 'Z') ? row - 'A' : 26 + (row - 'a'); int s = seat - '0'; std::cout << r * w + s << '\n'; }}
Cmain.c · 16 行
#include <stdio.h>int main(void) { int w, n; scanf("%d %d", &w, &n); for (int i = 0; i < n; i++) { char code[8]; scanf("%7s", code); char row = code[0], seat = code[1]; /* char는 작은 정수라 바로 뺄 수 있다. 1층 A~Z는 0~25째 줄, 2층 a~z는 26~51째 줄 */ int r = (row >= 'A' && row <= 'Z') ? row - 'A' : 26 + (row - 'a'); int s = seat - '0'; /* seat만 쓰면 '7'의 코드 55가 들어간다 */ printf("%d\n", r * w + s); } return 0;}
Craykonmain.cray · 21 行
first = 控制台.读行().去空白().分割(" ");w = first[0].转数字();n = first[1].转数字();循环 (i = 0; i < n; i++){ code = 控制台.读行().去空白(); // 크레이콘에는 글자 타입이 없다. 한 글자 문자열을 글자.코드로 수로 바꿔 뺀다 row = 字符.编码(code[0]); seat = 字符.编码(code[1]); r = 0; 如果 (row <= 字符.编码("Z")) { r = row - 字符.编码("A"); } 否则 { r = 26 + row - 字符.编码("a"); } s = seat - 字符.编码("0"); 控制台.输出(r * w + s);}