목록2023/12/12 (3)
연습장
프로그래머스를 풀다보면 종종 글을 이해를 잘 못하는 기분이 들곤한다. 첫 문자와 나머지 문자의 횟수를 샌다. 두 횟수가 같아지면 하나의 단어로 끊는다. 3번의 예시를 보면 a a a b b a c c a 1 2 3 3 3 4 4 4 나머지 0 0 0 1 2 2 3 4 4,4 로 같아져서 aaabbacc 의 한 단어로 마무리 된다. c c a b c 1 2 2 2 나머지 0 0 1 2 2,2 로 같아져서 ccab 로 한 단어가 되고 b a b 1 1 나머지 0 1 1,1 로 같아져서 ba 로 한 단어가 된다. 총 3단어로 result = 3 이된다. 1. 첫 글자가 어떤건지 저장 2. 다음 글자가 처음과 같은지에 따라서 각각 카운트 3. 같아지면 단어로 처리 def solution(s): answer = ..
n - 전체 학생수 lost - 체육복이 없다. reserve - 체육복이 여벌이 있다. return - 체육 수업을 듣는 학생 수 특이한 점으론 lost 와 reserve 가 같게 되면 빌리거나 빌려줄 수 없다는 점이다. 즉 lost 와 reserve 의 원소가 겹치면 양쪽 배열에서 지워버리는게 좋은 해결 방법이 될 걸로 예상 1. lost 와 reserve 에 중복되는 원소 확인 및 처리 2. lost 에서 1을 빼거나 1을 더했을때 reserve 에 해당 숫자가 있어야 빌릴 수 있음 3. 빌리고 나서는 더 빌리면안됨. [3] 이 [2,4] 에게 각각 빌리면 2번 빌리는 경우가 나올 수 있음. def solution(n, lost, reserve): answer = 0 num = 0 # 체육복을 빌린..
문제 해석 X, Y 두 수가 있는데 겹치는 숫자를 뽑아서 그걸로 가장 큰수를 만드는 문제라고 볼 수 있다. 12321 -> 1, 2, 3, 2, 1 42531 -> 4, 2, 5, 3, 1 각각 1,2,3 이 겹치며 321 로 배치하면 가장 큰 수가된다. 풀이 방법 1. 숫자를 분해 2. 겹치는 숫자를 추출 3. 크게 만들기 (역으로 정렬 , 내림차순으로 정렬) 라고 생각했는데 제한 사항을 보니 굉장히 긴 수가 나올 것으로 예상된다. 만약 위의 로직대로 for 문을 이용하면 시간 초과가 날것으로 예상된다. -> 배열로 풀어야되나 -> 딕셔너리로 만들어서 {'1' : a개, '2': b개 ... } 로 풀어야될까 1. 각각을 딕셔너리로 만든다. 2. 각 key 에 따라 value 값이 겹치는 정도를 본다...