본문 바로가기

C#/알고리즘 문제 풀기

프로그래머스 - 혼자서 하는 틱택토 이번 문제는 혼자서 틱택토를 할 때 일어나는 실수와 관련된 여러 경우의 수를 따지고, 나올수 있는 경우의 수인지 실수를 하여 잘못된 경우의 수가 발생 하였는지 를 확인하는 문제이다. 구체적인 알고리즘을 사용한다기 보다는, 기본적인 형식을 만들고, 각 경우의 수에 따른 예외처리를 진행하는 방식으로 진행하면 될것 같았다. 먼저 승리 여부를 중심으로 여러 경우의 수를 나누었다. public bool IsWin(char[,] board, char player){ for (int i = 0; i 그리고 기본적인 board의 2차원 배열을 만들고이에 따른 각 조건들의 예외처리를 진행하는 방식으로 solution 함수를 만들었다 조건모든 칸이 비어있음 == 시작하지 않음 => 가능한 조건X의 .. 더보기
프로그래머스 - k 번째 수 이번 문제는 간단한 난이도의 배열을 자르고 정렬하고 순서를 찾는 문제이다.아주 기초적인 내용이며, 단순히 일전 언급했던 substring() 과 비슷한 기능을 배열에서 사용할때의 방식을 언급하고 싶었다.https://toacode.tistory.com/57 프로그래머스 - 문자열 나누기문자열 나누기 문제를 받았다. 문자열을 빼는 문제들의 경우 대부분 Substring 메서드를 사용하여 풀어나간다. https://gent.tistory.com/502 [C#] 문자열 자르기 방법 (Substring, Split)씨샵(C#)에서 문자열을 자toacode.tistory.com public int[] solution(int[] array, int[,] commands){ int count = comma.. 더보기
프로그래머스 - 완전 탐색 (카펫) 이번 문제는 완전 탐색형식의 문제로, 답을 구함에 있어서의 방식은 명확하나, 시간 복잡도를 고려해서 답을 구하는 방식을 얼마나 최적화 할 수 있는지가 관건인 형식이다. 먼저 가장 직관적으로 형태를 만들어 보았다. public int[] solution1(int brown, int yellow){ int[] answer = new int[] { }; int a = yellow + 3; for(int w = 3; w w * h = Brown + Yellow 이며, w,h는 3이상이 되어야 조건이 성립한다.물론 위의 방식을 그대로 사용하면 경우의 수가 커질때 이중 for문의 시간 복잡도가 높아져 시간이 초과하게된다. 따라서 for문 자체의 부하는 줄이는 방식으로 경우의 수를 쪼개.. 더보기
프로그래머스 - 신고 결과 받기 이번 문제는 유저 간의 신고와 이에 대한 피드백 문제이다. 대부분의 데이터가 서로 페어로 연결이 되어있고, 한쪽의 데이터가 많이 저장되는 경우가 있다 보니, 데이터를 저장하고 불러오는 방식을 Dictionary 형태로 설계해야겠다고 생각했다.그리고 그중 value 값을 List 형식으로 받아 한 명의 유저가 여러 명을 신고한 경우 다 저장이 가능하도록 하였다. public int[] solution(string[] id_list, string[] report, int k){ int[] answer = new int[] { }; answer = new int[id_list.Length]; // 신고자 수 만큼 배열 생성 Dictionary> reportMap = new Diction.. 더보기
프로그래머스 - 문자열 나누기 문자열 나누기 문제를 받았다. 문자열을 빼는 문제들의 경우 대부분 Substring 메서드를 사용하여 풀어나간다. https://gent.tistory.com/502 [C#] 문자열 자르기 방법 (Substring, Split)씨샵(C#)에서 문자열을 자를 때는 Substring 메서드를 사용한다. Substring 메서드를 사용하면 특정 위치부터 원하는 길이만큼 문자열을 자를 수 있으며, IndexOf 메서드를 같이 사용하며 특정 문자 이후gent.tistory.com 이곳에 Substring 메서드의 각 매개변수별 다른 기능들을 다 정리되어 있다. 문제에서 원하는 조건을 보니.문자열을 빼는 것과, 과정을 반복한다는 것을 보고, 재귀호출 + Substring 활용을 통해서 문제를 풀어나가면 되겠다고 .. 더보기