[TIL] 23일 차 - C#으로 프로그래머스 문제 풀기 (4)

ChangBeom·2025년 2월 26일

TIL

목록 보기
24/53
post-thumbnail

오늘은 진행 중인 팀프로젝트가 바빠서 간단하게 쉬면서 풀었던 프로그래머스 문제를 리뷰해보려고 한다.

[1. 문자열 내림차순으로 배치하기]

<문제>

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

<제한 사항>

  • str은 길이 1 이상인 문자열입니다.
using System.Collections.Generic;

public class Solution {
    public string solution(string s) {
        string answer = "";
       
        List<char> list = new List<char>();
       
        for(int i=0;i<s.Length;i++){
            list.Add(s[i]);
        }
       
        list.Sort();
        list.Reverse();
       
        for(int i=0;i<s.Length;i++){
            answer += list[i];
        }
       
        return answer;
    }
}

<풀이>

제네릭 컬렉션 클래스에 존재하는 Sort(), Reverse() 함수를 활용하면 쉽게 내림차순으로 정렬할 수 있다.


[2. 문자열 다루기 기본]

<문제>

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

<제한 사항>

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
public class Solution {
    public bool solution(string s) {
        bool answer = true;
       
        if(s.Length == 4 || s.Length==6){
            for(int i=0;i<s.Length;i++){
                if('0'<=s[i] && s[i]<='9'){
                    continue;
                }
                else{
                    answer = false;
                }
            }
        }
        else{
            answer = false;
        }
       
        return answer;
    }
}

<풀이>

이 문제의 핵심은 char타입의 숫자를 걸러내는 것인데, if문의 조건을 '0' <= s[i] && s[i] <= '9' 으로 하면 char타입 숫자를 걸러낼 수 있다.


[3. 행렬의 덧셈]

<문제>

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

<제한 사항>

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
public class Solution {
    public int[,] solution(int[,] arr1, int[,] arr2) {
        int[,] answer = new int[arr1.GetLength(0),arr1.GetLength(1)];
       
        for(int i=0;i<arr1.GetLength(0);i++){
            for(int j=0;j<arr1.GetLength(1);j++){
                answer[i,j] = arr1[i,j] + arr2[i,j];
            }
        }
       
        return answer;
    }
}

<풀이>

2차원 배열을 활용한 문제이다. 어려운 문제는 아니지만 C#에서 2차원 배열을 다루는 법을 알아야 해결할 수 있는 문제이다. 2차원 배열의 길이를 반환해주는 함수를 잘 기억하자.

arr.GetLength();


0개의 댓글