문제 풀기 185

68. 햄버거 만들기 (SequenceEqual)

기본틀 :using System;public class Solution { public int solution(int[] ingredient) { int answer = 0; return answer; }} 문제를 보고 먼저 든 생각이 '어떤 자료형을 쓰지?' 였다. 문제를 보면 Stack아니면 List를 사용하면 풀 수 있을거라는 생각했기 때문이다. 결국 나는 Stack은 stack[index] 와 같이 index를 통해 뭔가를 조회하기 안 되기 때문에 List를 사용하기로 결정했다. 먼저, int 형 배열 canMake를 선언과 동시에 {1, 2, 3, 1}로 할당 및 int 형 자료 count와 List를 만들어준다. 그 다음 ingredient를 반복문으로 순회..

문제 풀기/C# 2025.02.19

67. 둘만의 암호

먼저, Console 로그를 사용해 'a'와 'z'의 아스키 코드를 출력해 보았다. 그다음으로, skip 배열을 문자열이 아닌 아스키 코드 값들을 담은 int 배열로 변환했다. 이후, 문자열 s를 순회하며 index만큼 증가시키되, skip에 포함된 문자라면 추가로 건너뛸 수 있도록 구현했다using System;using System.Linq;public class Solution { public string solution(string s, string skip, int index) { int[] charSkip = skip.Select(element => (int)element).ToArray(); //Console.W..

문제 풀기/C# 2025.02.18

66. 대충 만든 자판(Dictionary)

기본 틀 : using System;public class Solution { public int[] solution(string[] keymap, string[] targets) { int[] answer = new int[] {}; return answer; }} 문제를 보고 처음에는 곧 바로 targets와 keymap을 이용해 반복시키면서 원하는 결과를 얻을려고 했다. 하지만, 그럴 경우 targets에서 target을 얻기 위한 반복문, target에서 문자를 얻기 위한 반복, keymap에서 문자열을 얻기 위한 반복, 문자열에서 문자를 얻기 위한 반복 총 4중 반복문 형태로 굉장히 코드가 복잡해지고 수행시간에서 안 좋게 된다. 그래서,  keymap에서 문자..

문제 풀기/C# 2025.02.18

65. 문자열 나누기

기본 틀 : using System;public class Solution { public int solution(string s) { int answer = 0; return answer; }} 생각보다 간단한 문제인데 엄청 오래 고민 끝에 풀 수 있었다... 매개변수 s를 ToCharArray()를 통해 char 형 배열로 만들어준다.  그리고, char 형 변수를 새로 만들어 첫 번째 단어를 그 변수에 담고 int 형 변수로 same과 diff를 만들어 같은, 다른 단어 개수를 담을 준비를 한다. 반복문을 수행하면서 같은 단어이면 same을, 다른 단어이면 diff를 1증가시켜준다. 만약, same과 diff가 같다면 반복문의 index가 char 형 배열의 길이..

문제 풀기/C# 2025.02.12

64. 체육복

기본 틀 :using System;public class Solution { public int solution(int n, int[] lost, int[] reserve) { int answer = 0; return answer; }} 먼저 매개변수로 주어진 lost와 reserve에서 옷을 잃어버렸지만 여벌이 있는 사람을 제거해 진짜 옷이 없는 사람과 진짜 옷이 남는 사람을 구해준다.그 결과 체육복이 도둑질 당했지만,여벌이 존재하는 학생이 존재할 수 있다는사실을 알게 됐다. 그리고 해당 학생은 본인의 앞, 뒤 학생에게여벌 옷이 있는지 확인을 하기 전본인의 여벌 옷을 사용하는 식으로 코드를 작성해야 했다. 그래서, List realLost = lost.Where(el..

문제 풀기/C# 2025.02.12

63. 숫자 짝수 (Dictionary)

풀이 1) DictionaryX, Y에 대한 Dicitionary로 key는 char, value는 int 형으로 만들어주고 X, Y를 순회하면서 각각의 요소의 수를 구해줬다. 그 후, Dictionary에서 Key 또는 Value를 이용해 Intersect(교집합), Union(합집합), Except(차집합)이 가능하다는 사실을 알게 되고 각 요소들의 교집합을 구한 후 내림차순 정렬했다. 교집합의 요소들을 순회하면서 Math.Min(dictX[commonKey], dictY[commonKey]); 으로 출력할 요소의 개수를 구하고 string.Concat()과 Enumerable.Repeat()로 요소를 문자열에 담아줬다. 마지막으로 문자열의 길이가 0이면 "-1"으로,Substring(0, 1)이면 ..

문제 풀기/C# 2025.02.11

62. 옹알이 (2) (정규식)

이 문제는 JavaScript로 풀 때도 엄청 힘들었는데 C#으로 풀 때도 엄청 힘들었다... 풀이 1)  먼저, 발음 할 수 있는 단어를 배열로 작성한다.  그 후, 매개변수로 주어진 stirng 배열을 순회하면서 발음 가능한 단어 배열과 비교를 진행할 것인데 이때, 동일한 단어가 2번 나오는 경우가 존재할 수 있기 때문에 Replace(발음 가능 단어 + 발음 가능 단어, " 발음 불가능 단어 ") 로 단어를 바꿔준다. 동일한 단어가 2번 나오지 않을 경우는 Replace(발음 가능 단어, " ") 으로 공백만을 남겨둔다. 이렇게 매개변수로 주어진 발음을 모두 " "으로 제거한 후 Trim()으로 공백을 제거하고 Length가 0일 경우 answer을 1증가 시켜준다. using System;publ..

문제 풀기/C# 2025.02.11

61. (중요)로또의 최고 순위와 최저 순위(Intersect, Union, Except)

기본 틀 :using System;public class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[] {}; return answer; }} 지문은 굉장히 길지만 문제는 간단하다. 풀이 1) lottos의 요소 중 0인 요소의 개수를 구하고, lottos와 win_nums가 요소가 같은 개수를 구한다. 새로운 배열을 만들고  요소로는 Math.Min(6, 7 - (같은 요소 개수 + 0 개수))으로  최고 순위를 결정하고, Math.Min(6, 7 - (0 개수))으로 최소 순위를 결정한다.using System;using System.Linq;publi..

문제 풀기/C# 2025.02.10

60. 기사단원의 무기

기본 틀 : using System;public class Solution { public int solution(int number, int limit, int power) { int answer = 0; return answer; }} 문제 내용은 엄청 길지만 핵심은 약수의 개수를 구해서  limit 개수 보다 크면 power를, 작으면 약수의 개수를 모두 더하라는 문제였다. 약수의 개수를 구하는 방법 중 좋은 방법은 Math.Sqrt()를 사용해 반복 횟수를 최대한 줄이는 방법이다. 이때, 9와 같이 몫과 나누고자 하는 수가 같은 경우 약수의 개수가 2개가 아닌 1개이므로 유의해주면 된다.using System;using static System.Math;publ..

문제 풀기/C# 2025.02.10

59. 덧칠하기

기본 틀 :using System;public class Solution { public int solution(int n, int m, int[] section) { int answer = 0; return answer; }} 문제를 어떻게 하면 더 깔끔하고 쉽게 문제를 풀 수 있지... 고민하다가 뇌에 과부하가 온 것 같다... 풀이 1)  매개변수 section에 있는 요소를 Queue에 넣는다. while 문을 사용해서 queue.Count != 0 아니면 queue.Dequeue()로 값을 가져온다. 그리고 다시 while문으로 queue.Count가 0보다 크고, queue.Peek()값이 Dequeue()로 뽑은 값 + m 보다 작을 경우 계속 Dequeu..

문제 풀기/C# 2025.02.07