[BAEKJOON] 백준 15351: 인생 점수 (C#)

2024. 6. 19. 14:46IT/BaekJoon

문제 링크

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

 

 

문제

어떤 사람이 무엇을 즐기느냐에 따라 그 사람의 인생 점수를 측정할 수 있다. A를 1점, B를 2점, ... , Z를 26점으로 해, 즐기는 것의 이름의 알파벳 점수를 모두 더하면 된다. 예를 들어, "OTAKU LIFE" 는 O = 15, T = 20, A = 1, K = 11, U = 21, L = 12, I = 9, F = 6, E = 5 로 모두 더하면 100점이 된다(띄어쓰기는 무시). 하지만 "GAMING LIFE"는 총 83점으로 부족한 삶이고, "PROGRAMMING"은 131점으로 너무 힘든 삶을 살고 있다. 여러분이 할 것은 여러 개의 즐기는 것 리스트를 입력받아, 그것이 각 몇 점짜리 인생인지를 계산하는 것이다.

 

 

입력

첫 번째 줄에 즐기는 것의 개수 N이 주어진다. 뒤의 N개 줄에는 즐기는 것의 이름이 모두 영어 대문자와 띄어쓰기로 적혀 있다. 이는 30자를 넘지 않는다.

 

 

출력

각 줄에 인생 점수를 입력받은 대로 출력한다. 만약 100점이라면 100 대신 "PERFECT LIFE" 를 출력한다.

 

 

 

 

통과한 답안

namespace _15351
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            for (int i = 0; i < N; i++)
            {
                string input = Console.ReadLine();
                string result = LifeScore(input);
                Console.WriteLine(result);
            }
        }

        static string LifeScore(string input)
        {
            int score = 0;
            for (int i = 0; i < input.Length; i++)
            {
                if (input[i] != ' ')
                {
                    score += input[i] - 'A' + 1;
                }
            }

            if (score == 100)
            {
                return "PERFECT LIFE";
            }
            else
            {
                return score.ToString();
            }
        }
    }
}

 

알파벳 A부터 Z까지로 이루어진 문장이 주어졌을 때,

A가 1점, Z가 26점으로 각각의 알파벳에 점수를 매겨서

점수의 총합을 출력하는 문제이다(100점인 경우에는 "PERFECT LIFE"를 출력).

 

중복되는 점수 계산은 별도의 메서드로 추출하여 구현하였으며,

주어진 입력 값에 대해서 'A'가 1점이 되도록 조절하였다.

입력 값에 공백이 있는 경우에 입력 값을 조절하는 것이 아니라,

for 문에서 공백이 아닌 경우에만 점수를 추가하도록 구현하였다.