전체 글 76

[백준 1978번 문제] 소수 찾기

이번 문제는 입력한 숫자에서 소수가 몇개인지를 출력하는 문제이다. 먼저 이 문제를 풀기위해서 어떤 자연수가 소수인지 아닌지를 판별하는 조건이 있다. 1. 1보다 큰 수 2. n보다 작은 어떠한 수로 나누었을 때 나머지가 0이되면 합성수가 된다. import sys input = sys.stdin.readline n = int(input()) num_list = list(map(int,input().split())) prime = 0 # print(num_list) for i in num_list: error = 0 if i > 1: for j in range(2, i+1): if i % j == 0: error += 1 # print("error" , error) if error == 1: prime +..

백준 문제풀이 2022.07.29

[백준 10989번 문제] 수 정렬하기 3

이번 문제는 수 정렬하는 문제인데 sort 함수를 이용해서 하면 간단할거 같다고 생각을 하고 코드를 짰다. n = int(input()) number = [] for i in range(n): num = int(input()) number.append(num) number = sorted(number) for i in number: print(i) sort 함수를 이용해서 풀었더니 메모리 초과 에러가 발생하였다. 문제를 보니깐 메모리가 8MB 밖에 주어지지 않았다. for문을 돌면서 append함수를 사용하게되면 메모리가 계속 할당되어 효율적이지 못하게 메모리를 사용한다고 한다. 문제에서 주어진 입력값이 10000보다 작거나 같은 수이기 때문에 배열 인덱스를 생각해서 10001개의 리스트를 만들고 안에 ..

백준 문제풀이 2022.07.29

[백준 10815번 문제] 숫자카드

이번 문제는 입력받은 숫자가 내가 가지고 있는 숫자중에 있는지 없는지 판별하는 문제다. 그래서 배열 두개에 숫자를 입력받고 for문으로 돌려서 조건문으로 판별하려고 했었는데 시간초과가 떴다ㅜ 요즘엔 문제는 풀리는데 시간초과가 많이 뜨는거같다ㅜ num = int(input()) sanggeun = list(map(int,input().split())) m = int(input()) nums = list(map(int,input().split())) for i in range(len(nums)): if nums[i] in sanggeun: nums[i] = 1 else: nums[i] = 0 for i in nums: print(i, end=' ') 처음 방식으로 푼 코드인데 시간초과가 떠서 다른 사람들은 ..

백준 문제풀이 2022.05.20

[백준 2751번 문제] 수 정렬하기2

이 문제는 입력받은 수를 오름차순으로 정렬해서 출력하는 문제이다. 저번에도 같은 수 정렬하는 문제를 풀었었는데 다시 그 때 푼 방식을 보니깐 이중 for문으로 배열을 다 비교해서 정렬하는 방식으로 풀었었다. 지금은 sort함수도 알게 되어서 더 편하게 문제를 풀 수 있었다. 처음에 푼 방식은 배열에 입력받아서 sort함수로 정렬하고 for문으로 배열의 수를 출력하는 방식으로 구현했었는데 시간초과가 발생했다ㅠㅠ import sys num = int(sys.stdin.readline()) nums = [] for i in range(num): nums.append(int(sys.stdin.readline())) for i in sorted(nums): print(i) 그래서 for문에 sorted()함수를 ..

백준 문제풀이 2022.05.12

[백준 1181번 문제] 단어 정렬

이 문제는 입력받은 수 만큼 단어를 입력받아서 중복된 단어를 제거하고 사전순으로 나타내는 문제이다. n = int(input()) word = [] for i in range(n): word.append(input()) set_word = set(word) word = list(set_word) word.sort() word.sort(key = len) for i in word: print(i) 입력받은 수 만큼 for문을 통해서 입력받은 값을 word 배열에 저장한다. 그 다음에 set함수를 이용해서 중복된 값을 제거한 후에 list 함수를 이용해서 word배열에 다시 저장을 한다. 그다음 sort함수를 이용해서 알파벳 순으로 정렬한 후에 for문을 이용해서 정렬된 순으로 프린트하면 끝!

백준 문제풀이 2022.05.10

[백준 1003번 문제] 피보나치 함수

이 문제는 피보나치 함수를 이용해서 계산을 할 때 0과 1을 몇번 리턴하는지 카운트하는 문제이다. 처음에는 단순히 피보나치 함수를 만들고 그 안에서 0과 1을 카운트 하도록 구현하였다. def fibo(n): if n == 0: # print("0") global cnt_zero cnt_zero += 1 return 0 elif n == 1: # print("1") global cnt_one cnt_one += 1 return 1 else: return fibo(n-1) + fibo(n-2) cnt_zero = 0 cnt_one = 0 num = int(input("")) for i in range(num): n = int(input("")) fibo(n) print(cnt_zero, cnt_one) c..

백준 문제풀이 2022.05.09

[백준 1002번 문제] 터렛

점점 문제의 난이도가 어려워지고 프로젝트기간이여서 티스토리에 코드 리뷰하는것에 소홀했었던거 같다... 이 문제는 두개의 터렛이 위치한 좌표가 주어지고 그 터렛에서 다른 터렛이 위치한 곳까지의 거리가 주어졌을 때, 그 터렛이 위치할 수 있는 경우의 수를 계산해서 결과값을 보여주는 문제이다. 각각의 터렛의 좌표와 타겟터렛까지의 거리가 미리 주어져서 터렛의 위치에서 다른 타겟 터렛이 위치할 수 있는 지점을 그려보면 원이 그려진다. 그리하여, 처음에 두개의 터렛이 주어지기 때문에 두개의 원의 위치를 이용해서 타겟 터렛의 위치할 수 있는 점의 개수를 구하기 위해서는 두 터렛사이의 거리를 알아야한다. x1, y1, r1, x2, y2, r2 = map(int,input().split()) dis = math.sqr..

백준 문제풀이 2022.05.03

[백준 8958번 문제] OX퀴즈

이 문제는 입력한 수만큼 OX퀴즈의 정답결과(O,X)를 입력받아서 연속된 O의 점수는 누적되어 계산한다. 중첩 for문을 이용해서 입력받은 정답결과를 리스트에 저장하고 각 인덱스에 접근하는 for문을 이용해서 O인경우에는 score와 total_score에 1점씩 더해주고 X가 나온경우에는 score를 0으로 초기화 시켜서 연속된 경우에만 점수가 이어서 더해지도록 구현하였다. num = int(input()) for i in range(num): test = list(input()) score = 0 total_score = 0 for i in test: if i == 'O': score += 1 total_score += score else: score = 0 print(total_score)

백준 문제풀이 2022.02.18