본문 바로가기

Algorithm/Implementation

(C++, Rust) - 백준(BOJ) 15351 : 인생 점수

반응형

https://www.acmicpc.net/problem/15351

 

15351번: 인생 점수

어떤 사람이 무엇을 즐기느냐에 따라 그 사람의 인생 점수를 측정할 수 있다. A를 1점, B를 2점, ... , Z를 26점으로 해, 즐기는 것의 이름의 알파벳 점수를 모두 더하면 된다. 예를 들어, "OTAKU LIFE" 는

www.acmicpc.net

간단 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

사람 수 n, 점수를 출력할 score를 선언 후 적절히 입력받습니다.

📔 풀이과정

📑 C++

아스키 코드표에 있는 알파벳 대문자의 문자열들은 가장 초기의 대문자인 'A'를 뺐을 때 자료형이 int로 변환됩니다. 이특성을 이용해 각 문자가 알파벳인 경우 변환해 score에 누적해줍니다.

📑 rust

as 라는 casting 구문을 이용해 마찬가지로 누적해 score에 더해줍니다.

📔 정답출력

조건에 따라 점수를 출력해줍니다.


📕 Code

📑 C++

#include <bits/stdc++.h>
using namespace std;
int n, score;
string s;
int main(){
  cin >> n;
  cin.ignore();
  while(n--){
    score = 0;
    getline(cin, s);
    for(auto c : s){
      if(c == ' ') continue;
      score += c - 'A' + 1;
    }
    if(score == 100) cout << "PERFECT LIFE\n";
    else cout << score << '\n';
  }
}

 

📑 Rust

use std::io;

fn main(){
  let mut line = String::new();
  io::stdin().read_line(&mut line).expect("wrong io");
  let n = line.trim().parse::<i64>().unwrap();
  for _ in 0..n {
    let mut score = 0;
    let mut line = String::new();
    io::stdin().read_line(&mut line).expect("wrong io");
    let life = line.trim();
    for c in life.chars() {
      if c == ' ' {
        continue;
      }
      score += c as usize - 'A' as usize + 1;
    }
    if score == 100 {
      println!("PERFECT LIFE");
    }
    else {
      println!("{}", score);
    }
  }
}

 


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.