일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 그룹 # 그룹 해체 # 단축키 #figma #Figma
- index()
- 딥러닝
- 귀도 반 로섬
- input()
- 조건문 큰 수부터 입력받아야하는 이유
- 성적 입력받기
- 차집합
- html
- 변수와 입출력
- 조지 불
- pop()
- 파이썬
- 입출력
- 불리안
- null # undefined
- false
- a=1
- Python
- append()
- 1일차
- 변수
- del()
- 합집합
- 리스트와 차이점
- 부스트캠프
- 정보를 담을 수 있는 그릇
- 변할 수 있는
- Java Script # == # === # difference # 차이
- insert()
- Today
- Total
목록Algorithm/프로그래머스 (44)
I about me
문제 설명△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다. 이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번..
문제 설명대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예sanswer"pPoooyY"true "Pyy"false 문제 풀이 순서1) 대소문자를 구별하지 않으므로 :a = s.lower()2) 그걸 돌리면서 하나씩 숫자를 센다3) 같으..
[예시] ex 1) [3번, 1번, 2번, 3번] → {3번: 2, 1번: 1. 2번: 1} 즉, len(nums) = 4마리 중 2마리 선택 가능 종류는 3종류 있지만 2마리 고를 수 있는 상황에서 가장 많은 종류의 폰켓몬을 선택하는 방법은 어차피 return len(nums) / 2 ex 2) [3,3,3,2,2,4] → {3번: 3, 1번: 2. 2번: 4} 즉, len(nums) = 6마리 중 3마리 선택 가능 1번, 2번, 3번 이렇게 고르는 것이 가장 많은 종류의 포켓몬을 선택하는 것이므로 return len(nums) / 2 or 딕셔너리 키들의 종류의 길이 ex 3) [3,3,3,2,2,2] → {3번: 3, 2번: 3} 즉, len(nums) = 6마리 중 3마리 선택 가능 종류는 2종류..
해당 문제를 보는데 계속 초등학교 보드게임 스택버거가 생각났다... 그냥 그렇다고ㅋㅋ 이 문제는 아래서부터 위 뭐 이러면서 자연스럽게 "스택"을 이용해야한다는 것을 깨달았다. 햄버거는 빵 - 야채 - 고기 - 빵 순서로 만들어지고, 여기서 빵 = 1, 야채 = 2, 고기 = 3이다. 재료가 다음과 같이 주루룩 준비되면, ingredient = [2, 1, 1, 2, 3, 1, 2, 3, 1] 빵 - 야채 - 고기 - 빵 순서 즉, 1 - 2 - 3 - 1에 맞게 얼마만큼에 햄버거를 만들 수 있는지 코드를 짜보는 문제였다! 주어진 예시를 한 번 보자 예시에 따라 아래와 같이 손으로 작성해보면, 들어온 스택에 [-4:]로 슬라이싱 하여 확인해본 뒤 다음 순서로 채워지면 del 하면 된다는 걸 깨달았다!! d..
문제 문제를 보고 어이가 없었다... 얘는 하의도 안 입음..?ㅋㅋ 그러나 뭐 어쩌겠는가 풀어야지...! 사실 이 문제를 보고 처음 생각이 든 것은 Permutation과 Combination이다. 그래서 해당 메소드를 사용하려고 아등바등했는데.... 아니었다... 자 그래서 천천히 오답정리 가보자! 일단 해당 문제에서 입출력 예시는 다음과 같이 나와 있다. 아오!! headgear와 face 같은 "종류"를 나타내는 것들이 2번째로 가 있는게 화가 났다... 그말 즉슨 나보고 딕셔너리로 정리하라는 뜻? 그렇다... 또 해야지 뭐,,, closet = {} for name, kind in clothes: if kind in closet.keys(): closet[kind] += [name] else: c..
def solution(spell, dic): for i in dic: if sorted(i) == sorted(spell): return 1 return 2 대박이지 않음...? 와 어쩐지 ... ~을 조합해 만들 수 있는 단어라는 문구가 참 뭔가 이용할 것 같은데 sorted였다니...ㄷㄷ 나는 막 하나씩 for문 돌면서 그걸 사용했어? 그럼 remove하고 또 다시 reset 이런 식으로 시간 초과 나올 것 같은 감성으로 코드를 짰는데... 휴우 언제 이런 생각을 파바박 할 수 있을까???
중복된 문자 제거 사고 흐름 정리 1. collections라는 라이브러리에서 Counter 메소드를 가져와 딕셔너리 형태로 숫자를 세어줌. 2. temp.keys → ' '.join()으로 묶기 ex) dict_keys(['p', 'e', 'o', 'l']) → peol 3. 최종값 return 해주기 from collections import Counter def solution(my_string): temp = Counter(list(my_string)) unique_chars = ''.join(temp.keys()) return unique_chars 최빈값 구하기 문제 사고 흐름 정리 1. collections라는 라이브러리에서 Counter 메소드를 가져와 딕셔너리 형태로 숫자를 세어줌. 2...
한 번호가 다른 번호의 접두어인 경우가 있는지 확인해보자! def solution(phone_book): phone_book.sort() for i in range(len(phone_book) - 1): if phone_book[i + 1].startswith(phone_book[i]): return False return True str.startswitch(), str.endswitch() - str.startswitch(): 문자열 중 특정 문자열로 시작되는지를 확인 가능함. - str.endswitch(): 문자열 중 특정 문자열로 종료되는지를 확인 가능함. 다음의 결과값은 True나 False 형태의 불리언 자료형으로 출력됨. str ="No pain, No gain" str.startswith..
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 나는 문제를 보고 뭐야 '문제 껌이네' 바로 다음과 같이 썼다.... my_string[num1] = my_string[num2] 그러나 'TypeError: 'str' object does not support item assignment'라는 error가 떴다... 찾아보니 문자열에서 인덱스로 접근해 item을 바꾸려고 하면 TypeError가 발생한다고 했다. 이 방식으로 해결하려면 문자열을 리스트로 바꿔주는 과정을 우선적으로 해야 한다고 한다. 그래서 다음과 같이 해주니 짜잔~ ..
문제 분석 및 정답 도출 ① "("로 시작하는가? 시작한다면? "("의 수, "}"의 수 확인하기 그렇지 않다면? return False ② "("의 수 =="}"의 수 return True else: return False ① , ② 와 같은 생각에 따라 테스트 케이스는 합격했다... 그러나 다른 케이스에서는 안 된다 한다. def solution(s): start_count = 0 finish_count = 0 for i in range(len(s)): if s[0] == "(": if s[i] == "(": start_count += 1 else: finish_count += 1 else: return False if start_count == finish_count: return True else..