본문 바로가기

코딩테스트

Lv_1 : 약수의 합 문제 내 풀이class Solution { public int solution(int num) { int sum = 0; // 약수 : 어떤 수를 나누어 떨어지게 하는 수 // 1~절반 for(int i=1; i완전 탐색 (Brute-force) 방식 : 모든 가능성을 다 시도해보는 완전 탐색이다. num/2 : 불필요한 탐색의 범위를 줄여, 반복이 줄어들어 효율적이다. (그나마 효율적인 것이지 수가 커지면 비효율적이다.) num / 2 예시// 불필요한 반복을 줄임1, 2, 3, 4, 6, 1212/2 = 6 → 1~6만 확인하면 된다.7, 8, 9, 10, 11은 12를 나눌 수 없다. → 검사할 필요가 없다. # 다른 풀.. 더보기
한 번만 등장한 문자 # 내 풀이def solution(s): answer = {} for b in s: cnt = 1 if b not in answer: answer[b] = cnt else: answer[b] += 1 return "".join(sorted(a for a in answer if answer[a] == 1))딕셔너리를 활용하여, Key 값에는 해당 알파벳을 Value 값에는 해당 알파벳 카운팅 횟수를 넣었다.한 번 호출된 값을 찾은 후, sorted 함수가 내부적으로 리스트를 만들어 정렬(제네레이터 방식)하고 join 함수에 반환한다. join 함수는 리스트를 문자열로 최종적으로 바꿔준다.  # GPT 풀이def s.. 더보기
팩토리얼 # 내 풀이def solution(n): i = 0 while n>i: i += 1 n = n/i return i i! 팩토리얼을 거꾸로(나누어) 진행하였다.생각해보니, 곱하면서 했어도 되는데 괜히 더 어렵게 푼 것 같다.   # GPT 풀이def solution(n): i, fact = 1, 1 while fact * (i + 1) 팩토리얼 연산처럼, 곱하기를 이용하여 이해하는데 더 쉽다. 더보기
진료 순서 정하기 # 내 풀이def solution(emergency): answer = [] for i in emergency: lt = 1 for j in emergency: if i모든 수를 비교하여, 비교하는 숫자가 비교되어지는 숫자보다 작으면 1을 더하는 방식을 사용하였다.   # 부족한 점인덱스를 이용항 방법이 있을까 고민하였지만, 해당 부분의 지식이 부족하여 포기하였다.인덱스(.index())를 호출하면 리스트를 처음부터 끝까지 탐색한다. → 비효율적, 다른 방법 모색   # GPT 풀이def solution(emergency): rank = {num: i + 1 for i, num in enumerate(sorted(emergency, revers.. 더보기
A로 B 만들기 # 내 풀이def solution(before, after): alist = list(after) for a in before: if a in alist: alist.remove(a) return 1 if alist == [] else 0list(after) : list로 형 변환 → 문자열의 각 문자가 list의 각 요소가 된다.if a in alsit : alist 안에 a가 있다면 True, 없다면 Falsealist.remove(a) : alist에서 a의 값을 삭제시켜준다.return 1 if alist == [] else 0 : 삼항 연산자로 True 1, False 0이 반환 # 헷갈렸던 부분str에 사용할 수 있는 메서드와 list에 사용할 .. 더보기
k의 개수 # 내 풀이def solution(i, j, k): answer = 0 for num in range(i, j+1): for a in str(num): if str(k) == a: answer += 1 return answer   # GPT 풀이def solution(i, j, k): return sum(str(num).count(str(k)) for num in range(i, j + 1))num 문자열에 k 문자가 중첩되지 않고 등장하는 횟수를 돌려준다.   # sum(iterable, /, start=0) :start 및 iterable의 항목들을 왼쪽에서 오른쪽으로 합하고 합계를 돌려준다. ite.. 더보기
2차원으로 만들기 # 내 풀이def solution(num_list, n): answer = [] for i in range(0, len(num_list), n): answer.append(num_list[i:i+n]) return answerrange(start, stop, step)start : 시작 숫자 (생략하면 기본값 0)stop : 끝 숫자 (ex. 11이면 -> 인덱스 10까지)step : 증가/감소 간격 (생략하면 기본값 1)리스트 슬라이싱을 사용하여 서브리스트를 추출한 후, answer 리스트에 추가   # GPT 풀이_1def solution(num_list, n): return [num_list[i:i+n] for i in range(0, len(num_.. 더보기
모스부호 # 내 풀이def solution(letter): answer = [] morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l', '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x', '-.--':'y','--..':'z' } letter = letter.split(" ") for word in lett.. 더보기