문자열3 [Swift][프로그래머스][정렬] 가장 큰 수 요구능력 정렬과 문자열에 대한 이해 문제풀이 Swift의 경우 sort()함수를 제공한다. sort()함수는 Timsort라는 정렬 알고리즘으로 이루어져있는데, Timsort는 insertionSort와 mergeSort가 합쳐진것이라고 한다. swift에서 알고리즘문제를 풀면서 거의 유일(?)하게 빠르고 좋은함수인것같다. 최악의 경우에도 O(nlogn)의 성능을 뽑아낸다. 이 문제는 이미 문제에 풀이법을 적어놨다. 문자열로 처리해서 리턴해라... 그렇다. 정렬할때도 문자열로 처리해서 더 큰 경우의 수를 맨앞에 놓는 내림차순을 하면 되는것이었다. 쉽게 설명하자면 [6, 10, 2]가 있으면 "\(6)" + "\(10)" 과 "\(10)" + "\(6)" 중 크게나오는 경우로 내림차순을 하라는 말이다. 그.. 2022. 4. 13. [Swift][문자열][LV_2][프로그래머스] 영어 끝말잇기 요구능력 : 문자열에 대한 이해 코드설명 : 이 문제에서 핵심 1. 단어 자체가 이전에 나온적이 있는지 확인 2. 바로 이전단어의 끝 문자가 현재단어의 맨 앞문자와 일치하는지 확인 ex) char -> r로 시작해야됨 3. 끝말잇기를 성공한 경우를 확인 변수설명 count = 차례를 계산하기위해 수를 세는 변수 arr = 단어를 arr에 저장하면서 새로운 단어를 저장할 때 그게 앞전에 나온적이 있는지 확인하기 위한 변수 result = 결과를 저장하고 return하기 위함 order = 탈락자가 몇번째 순서인지 세기 위함. 1. 단어 자체가 이전에 나온적이 있는지 확인 contains() 함수를 사용하여 이전에 단어가 나온적이 있는지 확인 하였다. 2. 바로 이전단어의 끝 문자가 현재단어의 맨 앞문자와 .. 2021. 11. 19. [Swift][문자열][LV2][프로그래머스] 스킬트리 요구능력 : 문자열에 대한 이해 코드설명 : 이 문제의 해답을 보기전에 꿀팁. 이런문제는 사람들마다 문제푸는 스타일이 천차만별일것이라,, 코드해석이 어려울 수 있다. 그럴때는 그냥 혼자서 생각하고 디버깅하면서 푸는게 최고다. 이 문제에서의 핵심을 짚어보자. 1. 문자열을 Character로 분해 2. 배열에서 문자열의 인덱스 활용 3. 선행스킬의 존재여부 변수가 너무 많아서 변수부터.. skillSplit : skill입력을 캐릭터자료형으로 분해해놓은 캐릭터배열 before : 이전에 나온 스킬의 인덱스를 저장한다. isSkill : 스킬트리가 스킬트리로서의 조건들을 만족하는지 안하는지 count : 조건들을 만족하는 스킬트리의 개수 beforeSkill : 이전에 선행으로 배워야하는 스킬 skillTr.. 2021. 11. 18. 이전 1 다음