[프로그래머스 / Lv.0] 영어가 싫어요 (C#)

2023. 2. 25. 08:57·프로그래머스(Programmers)/C# 풀이

| 문제 설명 ❓

영어가 싫은 머쓱이는 영어로 표기되어 있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


| 제한 사항 ❌

  • numbers는 소문자로만 구성되어 있습니다.
  • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
  • 1 ≤ numbers의 길이 ≤ 50
  • "zero"는 numbers의 맨 앞에 올 수 없습니다.

| 입출력 예 💬

 

numbers result
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067

| 입출력 예 설명 💬

입출력 예 #1

  • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return 합니다.

입출력 예 #1

  • "onefourzerosixseven"를 숫자로 바꾼 14067을 return 합니다.

| 풀이 🔥

⚠️ 한 번씩 읽어주세요 ⚠️

제 개인의 풀이 방법이며 틀린 풀이 방법 일수도, 더 나은 풀이법이 존재할 수도 있습니다!

전체 코드는 깃헙 링크 혹은 하단 접은 글을 펼쳐 확인가능하며, 복붙이 아닌 참고용 코드입니다

 

 

영어로 된 숫자 문자열은 일반적인 계산이나 비교가 어려우므로, 이를 숫자로 변환하는 것이 필요합니다.

이 문제는 문자열 배열 numbers가 주어지고, numToStr 배열에는 "zero", "one", "two" 등의 문자열(숫자)이 저장되어 있습니다. 각 numToStr의 문자열은 0부터 9까지의 숫자를 문자열로 배열에 추가해 둔 것입니다..

 

문자열 numbers에서 numToStr [i]와 일치하는 문자열이 있다면, 해당하는 i(인덱스)로 numbers 문자열을 치환합니다. 예를 들어, "onefourthree"라는 문자열이 주어졌을 때, 이를 "143"으로 변환합니다.

 

저는 이런 방법으로 해결을 했습니다. 다른 풀이 방법도 분명 있을 거 같다는 생각이 드는데 개인적으로는 가장 쉽게 생각해 낸 코드인 거 같습니다.

 

이 코드는 영어로 된 숫자 문자열을 처리하는 코드인 만큼 비슷한 상황에서 응용해서 쓰일 수도 있을 거 같습니다. 예를 들어, 숫자 게임이나 영어 단어를 활용한 문제를 푸는 게임에 사용해도 괜찮을 듯합니다.

 

[깃헙 / Github]

😻 댓글과 공감 한 번씩 감사드립니다 😻


| 전체 코드 🔎

더보기
using System;

public class Solution {
    public long solution(string numbers) {
        
        long answer = 0;
        
        // 각 케이스를 문자열 배열로 생성
        string[] numToStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        // numToStr의 길이만큼 반복
        for(int i =0 ; i<numToStr.Length; i++)
        {
            // numToStr[i]와 해당하는 문자열이 있으면 i로 치환
            numbers = numbers.Replace(numToStr[i],i.ToString());
        }
        
        // 결과값 (string)을 long 타입으로 변환
        answer = long.Parse(numbers);
        
        return answer;
    }
}
저작자표시 변경금지 (새창열림)
'프로그래머스(Programmers)/C# 풀이' 카테고리의 다른 글
  • [프로그래머스 / Lv.0] 인덱스 바꾸기 (C#)
  • [프로그래머스 / Lv.0] 한 번만 등장한 문자 (C#)
  • [프로그래머스 / Lv.0] 약수 구하기 (C#)
  • [프로그래머스 / Lv.0] 편지 (C#)
프로포폴
프로포폴
Unity 클라이언트 개발자가 운영 하는 개발 블로그 입니다
  • 프로포폴
    약파는개발자
    프로포폴
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • 유니티 (21)
        • 공부 (0)
        • 튜토리얼 (0)
        • 에셋 (3)
        • 문제 해결 (2)
        • 작업 (16)
      • 언리얼(Unreal) (1)
        • 문제 해결 (1)
      • 백준 (20)
        • 브론즈5 (Bronze V) (20)
      • 프로그래머스(Programmers) (23)
        • C# 풀이 (23)
      • C# (0)
        • 팁 (Tip) (0)
      • 컴퓨터 과학(CS) (2)
        • 알고리즘 (1)
        • 자료구조 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
    • 태그
    • 유니티
    • 알고리즘
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    브론즈5
    SHA
    프로그래머스
    c#
    백준
    유니티
    Bronze V
    CS
    baekjoon
    Unity
    프로그래머스_Lv.0
    컴퓨터과학
    projecta
    픽셀리마인드
    탐색(Search)
    개발일지
    알고리즘
    C++
    작업
    프로그래머스_C#
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
프로포폴
[프로그래머스 / Lv.0] 영어가 싫어요 (C#)
상단으로

티스토리툴바