목록배열과리스트 (3)
바위타는 두루미
문제 문자열에 들어있는 모든 공백을 '%20'으로 바꾸어 주는 메서드를 작성하라. 최종적으로 모든 문자를 다 담을 수 있을 만큼 충분한 공간이 이미 확보되어 있으며 문자열의 최종 길이가 함께 주어진다고 가정해도 된다. 입력 : 'Mr John Smith',13 출력 : 'Mr%20John%20Smith' 해결법 입력문자열을 한번 읽어서 공백의 갯수를 확인 한 후에, (공백갯수 *3 + 전체 문자열의 길이)를 새로운 문자열의 길이로 생각하고 그 위치부터 원래 문자열의 가장 끝부분부터 읽어나가며 복사하여 새로운 문자열을 구성한다. 뒤에서부터 읽어서 문자인 경우에는 그대로 복사하고 공백인 경우에는 '%20'을 복사하며 문자열을 만들어나가면 된다. 뒤에서 부터 조작하는 이유는 덮어쓰여질 걱정 하지 않고 문자들을..
문제 문자열 두개가 주어졌을때 이 둘이 서로 순열관계야 있는지 확인하는 메서드를 작성하라 1. 정렬하기 두 문자열이 순열관계라면 문자를 정렬한다음 비교해봤을때 같은 문자열이여야한다. def Solution(s1, s2): if len(s1) != len(s2): return False s1.sort() s2.sort() return s1 == s2 Time Complexity O(NlogN + N) 2. 문자열에 포함된 문자의 출연 횟수가 같은지 검사하기 - Ascii코드라면 128개의 문자들에 대한 배열을 선언하고 각 문자들의 갯수를 세서 비교한다. def Solution(s1,s2): if len(s1) != len(s2): return False alpha_cnt = [0]*128 for c in ..
문제 문자열이 주어졌을때 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라. 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. 해결방법 1. Hash를 이용하여 해결하기 def solution(word): alpha_dict = {} for w in word: if alpha_dict.get(w, 0) >0 : return False alpha_dict[w] = 1 return True hash라는 자료구조를 이용하여 해결하면 Time Complexity = O(N) Space Complexity = O(N) 2. 비트벡터를 이용해 해결하기 def solution(word): alcheck = 0 for w in word: if alcheck & (1