본문 바로가기

코딩테스트

합성수 찾기 # 내 풀이def solution(n): answer = 0 count = 0 for a in range(1, n+1): for b in range(1, a+1): if a%b == 0: count +=1 if count>=3: answer += 1 break count = 0 return answer바깥 for 문 : n 이하의 숫자 중 합성수를 찾기 위한 for문안쪽 for 문 : 각 숫자가 합성수인지 판별을 위한 for문합성수 : 약수의 갯수가 3개 이상인 수약수 : 어떤 수를 나누었을 때 나누어떨어지는 수, 모든 수는.. 더보기
중복된 문자 제거 # 내 풀이def solution(my_string): answer = '' for word in my_string: if word not in answer: answer += word return answerif word not in answer : answer 안에 word가 없을 경우, 조건이 True이다.  # GPT 풀이def solution(my_string): return "".join(dict.fromkeys(my_string))dict.fromkeys(my_string) : 입력 문자열의 문자들을 키로 갖는 dict 생성 (순서 유지 & 중복 제거)" ".join(...) : 딕셔너리의 키들을 문자열로 결합하여 반환  #.. 더보기
숫자 찾기 # 내 풀이def solution(num, k): answer = 0 for a in str(num): answer += 1 if a == str(k): return answer return -1str(num) : str 함수를 통해 숫자를 문자열로 형 변환 (for... in...문은 iterable만 사용할 수 있다.)answer : 특정 문자열의 위치를 알려주는 인덱스 역활을 한다.  # GPT 풀이def solution(num, k): num_str = str(num) return num_str.find(str(k)) + 1 or -1find(문자) : 문자열에서 특정 문자가 처음 등장하는 위치(인덱스)를 반환한다. .. 더보기
배열 회전시키기 # 내 풀이list.pop() : 리스트의 마지막 요소를 제거한 후, 그 값을 반환하는 리스트 객체의 메서드이다.리스트 객체이기 때문에 pop()을 호출하면 다시 대입하지 않아도 리스트 자체가 변경된다.인덱스를 통해 특정 리스트의 값을 제거할 수 있다. 다만 인덱스가 리스트의 범위를 넘으면 오류가 발생한다.insert(i, x) : 리스트의 i 인덱스에 x 값 추가하는 리스트 객체의 메서드이다.리스트 객체이기 때문에 insert(i, x)을 호출하면 다시 대입하지 않아도 리스트 자체가 변경된다.인덱스가 리스트 길이보다 크면, 자동으로 리스트의 맨 끝에 추가된다.  # GPT 풀이from collections import dequedef solution(numbers, direction): dq = .. 더보기
외계 행성의 나이 # GPT 풀이def solution(age): alphabet = "abcdefghij" return ''.join(alphabet[int(digit)] for digit in str(age))Python에서는 문자열을 리스트처럼 인덱싱이 가능하다. (java, js, c#, c++ 가능하다.)a는 0, b는 1, c는 2 ... →  인덱스를 통해 접근할 수 있다.  # for... in ...  (리스트 내포 형태로)for 변수 in 반복할_대상: 실행할_코드변수 → 반복 대상에서 하나씩 값을 가져와 저장하는 변수반복할_대상 → 리스트, 문자열, 튜플, 딕셔너리, range 등 반복 가능한(iterable) 자료형  # 리스트 내포 (list comprehension) :시퀀스의 요.. 더보기
피자 나눠 먹기 (2) # 내 풀이   # GPT 풀이import mathdef solution(n): return math.lcm(n, 6) // 6math.lcm(n, 6) : n명과 6조각의 최소공배수(LCM)를 구한다.// 6 : 최소공배수를 6으로 나누어 필요한 피자 판 수를 계산한다. # math.lcm(*intergers) :지정된 정수 인자의 최소 공배수를 반환한다. 인자 중 어느 하나가 0이면, 반환 값은 0이다. 인자가 없는 lcm()은 1을 반환한다. 더보기
문자열 정렬하기(2) # 내 풀이  # 풀이str.join(iterable) : 문자열(iterable)들을 이어 붙여 돌려준다. iterable에 bytes 객체나 기타 문자열이 아닌 값이 있으면 TypeError를 일으킨다. sorted(iterable, /, *, key=None, reverse=False) : iterable의 항목들로 새 정렬된 리스트를 돌려준다. str.lower() : 모든 케이스 문자가 소문자로 변환된 문자열의 복사본을 돌려준다.→ 3개의 함수는 Python 내장형 함수이다.my_string = "HeLlo"my_string = my_string.lower()print(my_string)my_string = sorted(my_string)print(my_string)my_string = "".j.. 더보기
암호 해독 # 내 풀이  # 풀이시간 복잡도for a in cipher: 루프가 cipher의 길이 n만큼 실행됨.루프 내부에서 sum을 1 증가시키는 연산은 O(1)if sum % code == 0: 조건문은 O(1) Python의 문자열은 **불변(immutable)** , "+=" 연산은 매번 새로운 문자열을 생성하고 기존 내용을 복사하는 과정이 필요하다.ex)첫 번째 s += "a" → "a" (새로운 메모리 할당)두 번째 s += "b" → "ab" (새로운 메모리 할당, "a" 복사)세 번째 s += "c" → "abc" (새로운 메모리 할당, "ab" 복사)➡ 전체적으로 O(n2)의 시간 복잡도가 발생   공간 복잡도sum과 answer 변수는 추가적인 저장 공간을 차지하지만, answer는 최종적으로.. 더보기