목록코딩/알고리즘 (9)
거북이처럼 코딩해도 괜찮으려나
https://colab.research.google.com/drive/1EwOepdhCvCBIK873EDlUgOF2n-fuXpso?hl=ko Google Colaboratory Notebook Run, share, and edit Python notebooks colab.research.google.com Goolge Colaboratory Notebook으로 구현하였다. import matplotlib.pyplot as plt import librosa.display import librosa import numpy as np print(librosa.__version__) y, sr = librosa.load(librosa.util.example_audio_file()) print(len(y), s..
사용 언어 : C# 체감 난이도 : 중간 활용 : 이분탐색 public long solution(int n, int[] times) { long answer = -1; int wait = n; // 대기자 int[] screen = new int[times.Length]; // 심사장 for (int i = 0; i 0) { answer++; // 1분 증가 // 대기자 넣어주기 for (int i = 0; i < times.Leng..
사용 언어 : C# 체감 난이도 : 쉬움 활용 : 대진표? 알고리즘 public int solution(int n, int a, int b) { int answer = 1; int x = a, y = b; while (true) { // 같은 라운드에서 만나는지 if (Math.Abs(x-y) == 1 && Math.Max(x,y) % 2 ==0) { break; } // 그렇지 않다면, a와 b를 다음 라운드로 if (x % 2 == 0) x /= 2; else x = (x + 1) / 2; if (y % 2 == 0) y /= 2; else y = (y + 1) / 2; answer++; } return answer; } 반으로 쪼개고 쪼개면서 서로 만나면 탈출하고 Round를 return한다.
사용 언어 : C# 체감 난이도 : 애매한 문제 활용 : Greedy Algorithm public int solution(string name) { int answer = 0; // name의 Length에 따른 다른 방식 적용 if (name.Length < 3) { foreach (char c in name) { if (c Math.Abs(c[left_index] - 'N')) // right_index로 가는 경우가 효율적일 경우 { answer++; // right로 한 칸 이동 index = right_index; right_index++; } else // left_index로 가는 경우가 효율적일 경우 { answer++; // left로 한 칸 이동 index = left_index; l..
사용 언어 : C# 체감 난이도 : 쉬움 활용 : string 관련 함수 public int solution(string skill, string[] skill_trees) { int answer = 0; bool check; int char_index; // 비교하고자 하는 단어의 위치 foreach (string skill_tree in skill_trees) { check = true; for (int i = skill.Length - 1; i > 0; i--) // skill의 마지막부터 비교함 { char_index = skill_tree.IndexOf(skill.Substring(i, 1)); if (char_index != -1) // 비교하고자 하는 단어가 문자열에 있을 경우 { // 선행..
사용 언어 : C# 체감 난이도 : 쉬움 활용 : 아스키코드, foreach public string solution(string s, int n) { string answer = ""; foreach (char c in s) { if (c == ' ') // 공백은 그대로 answer += " "; else // 그 외 (알파벳) { if (c + n > 122 || (c 90)) answer += Convert.ToChar(c + n - 26); else answer += Convert.ToChar(c + n); } } return answer; } 다른 사람들의 코드를 보면 if문에 알파벳을 직접 넣었다. 나는 뭔가 좋은 방법이 있을 것 같아서 다른 걸로 했지만, 역시 ..
사용 언어 : C# 체감 난이도 : 쉬움 활용 : foreach public bool solution(string s) { bool answer = true; // 1. 문자열 길이는 4 or 6 if (s.Length != 4 && s.Length != 6) answer = false; else { // 2. 문자열 하나하나 반복 비교 foreach (char c in s) { if (!(c >= 48 && c