BaekJoon[C#]

문자열 단계 5622

wny0320 2022. 9. 28. 21:30

백준 온라인 코딩 문제풀이

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

코드 참고

https://replit.com/@wny0320

 

wny0320 (박 상운)

Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.

replit.com

 

5622번만 다룸

 


5622

using System;

class Program
{
    static void Main(string[] args)
    {
        string str = Console.ReadLine();
        int time = 0;

        foreach (char i in str)
        {
            time += (i - 65) / 3 + 3;

            if (i == 'S' | i == 'V' | i >= 'Y')
                time--;
        }
        Console.WriteLine(time);
    }
}

A~Z의 아스키 코드값은 65~90

 

그리고 시작지점은 숫자 2부터 시작이므로 시간은 3초부터 시작

 

문자열을 받아 foreach문으로 반복문을 돌려 char 형탸의 문자를 확인

 

그 문자의 아스키 코드값 - 65('A')에 /3을 하면 시작 지점부터 몇번쨰에 해당하는 숫자인지 알 수 있음

 

추가로 시작 숫자가 3초이므로 +3을 해줌

 

하지만 7번과 9번에 알파벳이 4개씩 부여되어서 /3의 값이 부정확하므로 if문을 통해 해결

-처음 밀리는 'S', 'S'때문에 한칸 밀린 'V' 그리고 두칸씩 밀린 'Y','Z' 를 연산할 시에는 시간 값 -1을 해줌

 

사실 if문이나 switch문으로 노가다를 해도 되지만 코드가 아름답지 못하여 좀 더 찾아보고 풀어보았음

'BaekJoon[C#]' 카테고리의 다른 글

문자열 단계 1316  (0) 2022.10.04
문자열 단계 2941  (0) 2022.10.03
문자열 단계 1152  (0) 2022.09.27
문자열 단계 2675  (0) 2022.09.26
함수 1065  (0) 2022.09.25