오늘은 진행 중인 팀프로젝트가 바빠서 간단하게 쉬면서 풀었던 프로그래머스 문제를 리뷰해보려고 한다.
<문제>
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
<제한 사항>
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() 함수를 활용하면 쉽게 내림차순으로 정렬할 수 있다.
<문제>
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
<제한 사항>
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타입 숫자를 걸러낼 수 있다.
<문제>
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
<제한 사항>
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();