분류 전체보기(43)
-
두 수 더하기
덧셈을 통하여 target을 만들 수 있는 배열 원소의 인덱스 두개를 리턴하라라는 문제입니다. 예제 1. nums = [2, 7, 11, 15] taget = 9 매우 쉽다. 하나하나 다 탐색하며 진행하면 된다. 풀이 # 덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라. nums = [2, 7, 11, 15] taget = 9 # 브루트 포스 방식 def twoSum(nums, target): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] print(twoSum(nums, taget)) 2부터 시작하여 하나하나 더해보며 target과 맞는지 찾으..
2023.01.17 -
백준: 더하기 싸이클
https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 해당 문제는 숫자의 십의자리 일의자리를 더해 주면서 기존의 숫자와 동일하게 될때까지 몇번의 전환 작업이 필요하다. 기존엔 str(), split() 함수를 사용해 하였지만 시간초과로 인하여 수행되지 않는다. 이후 변경된 코드이다 풀이 n = int(input()) num = n cnt = 0 while True: tens = num // 10 units = num % 10 newUn..
2023.01.15 -
백준: 소수 찾기
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수 구하기랑은 다른 문제로 이력 받은 수들 중 소수가 몇개인지 확인해야한다. 풀이 n = int(input()) # 입력받을 숫자의 개수 nums = list(map(int, input().split(' '))) # 공백으로 숫자 구분. ex) 1 3 5 7 primeCount = 0 # 소수의 개수 for i in nums: cnt = 0 if i == 1: # 1은 소수가 아니기 때문에 건너띔 continue for j in range(2, i+1): if i..
2023.01.15 -
백준: 소수 구하기
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소수를 구하는 식을 표현하는건 쉽다. 하지만 해당 문제의 N의 최대 범위가 100만 까지 들어올 수 있고 시간제한이 2초이기 때문에 시간 복잡도는 O(n^2)이 넘어가서는 안된다. 본인도 처음에 이중 포문을 활용하였지만 수정을 아무리 하여도 시간초과에 막혔었다. 알고보니 에라토스테네스의 체라는 공식을 적용해야 통과할 수 있는 문제였다. 에라토스테네스의 체는 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에..
2023.01.15 -
백준: 오븐 시계
https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 해당 문제는 비교적 간단하다. 현재 시간에서 n 분이 초과된 시간을 계산하는 문제이다. 예제 1. 14 30 20 출력 14 50 코드 # 현재 시간에서 요리 시간이 경과된 시간을 표시하라 hour, minute = map(int, input().split()) cook_time = int(input()) total_minute = hour * 60 + minute + cook_tim..
2023.01.15 -
그룹 애너그램
애너그램 이란? 일종의 언어유희로 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것을 말한다. 문제 . 문자열 배열을 받아 애너그램 단위로 그룹핑하라. 예제 1. ["eat", "tea", "tan", "ate", "nat", "bat"] 출력 [ ["ate", "eat", "tea"], ["nat", "tan"], ["bat"] ] 코드 # 문자열을 받아 애너그램 단위로 그룹핑하라. q = ["eat", "tea", "tan", "ate", "nat", "bat"] def solution(strs): dic = {} for x in strs: # ord로 유니코드 값 가져오기 sortedStr = ''.join(sorted(x)) # 딕셔너리에 sortedStr : [] 형태로 넣기 if sorted..
2023.01.15