BOJ-Algorithm
-
백준 1929 - 소수 구하기BOJ-Algorithm 2023. 2. 17. 16:56
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net a,b = map(int, input().split()) for i in range(a,b+1): if i==1: continue for j in range(2,int(i**0.5)+1): if i%j==0: break else: print(i) 1은 그냥 출력해주고, 2부터는 해당 값의 제곱근까지의 값만을 비교해서 나누어 떨어지는 1 이외의 다른 값이 있다면 소수가 아니므로 break한다. break가 안 된 것들만 출력해준다.
-
백준 2003 - 수들의 합BOJ-Algorithm 2023. 2. 14. 16:53
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net length,value = map(int, input().split()) arr = list(map(int, input().split())) counter = 0 pointer_a = 0 pointer_b = 1 while pointer_a
-
백준 1269 - 대칭 차집합BOJ-Algorithm 2023. 2. 13. 22:43
https://www.acmicpc.net/problem/1269 a, b = map(int, input().split()) arr_a = set(map(int, input().split())) arr_b = set(map(int, input().split())) print(len(arr_a-arr_b)+len(arr_b-arr_a)) set 자료구조끼리 연산을 통해 합집합 및 차집함을 만들어 낼 수 있다. 그 부분만 알면 어려울 것이 없는 문제다.
-
백준 14425 - 문자열 집합BOJ-Algorithm 2023. 2. 13. 22:40
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net a,b = map(int, input().split()) arr = set() ans = 0 for i in range(a): arr.add(input().strip()) for j in range(b): checker = input().strip() if checker in arr: ans+=1 print(ans) 리스트로 값을 받아 체크하려면 오래 걸리지만, h..
-
programmers lv2 - 이진 변환 반복하기BOJ-Algorithm 2022. 11. 14. 17:07
바꿔야 하는 문자열이 1이 될 때까지, 0의 개수를 세서 zero_remove에 더해 주고 round를 1씩 올려준다. 파이썬에는 이진수로 바꿔주는 bin 기능이 있으나 이 기능은 사용하게 되면 변환한 이진수 앞에 '0b'가 자동적으로 붙기 때문에 이 부분을 제거하기 위해 [2:]로 문자열 슬라이싱을 통해 불필요한 문자를 제거해서 순수한 이진수만을 얻을 수 있다. def solution(s): answer = [] zero_remove = 0 rounds = 0 while True: if s=='1': return [rounds, zero_remove] zero_remove+= s.count('0') rounds+=1 s = bin(s.count("1"))[2:] return answer
-
프로그래머스 lv2 - JadenCase 문자열 만들기BOJ-Algorithm 2022. 11. 14. 16:18
https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): answer='' s = s.split(' ') #공백문자가 연속해서 나올 수 있으므로, 공백문자 1개를 기준으로 분리 counter = 0 for word in s: word = word.lower() #모든 문자를 소문자 처리 후 letter_counter=0 for k in word: if ord(k)>=97 and ord(k)
-
프로그래머스 lv2 - 영어 끝말잇기BOJ-Algorithm 2022. 11. 11. 18:00
https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, words): answer = [0,0] previous_word_list = [] #이미 사용된 단어를 넣는 배열 check = 0 # 이번 턴에 단어를 말해야 할 사람을 세는 카운터 rounds = 1 # 끝말잇기가 몇 라운드까지 올바르게 진행되었는지 세는 카운터 flag = True # 끝말잇기가 전체적으로 올바르게 진행되었는지를 체크하는 flag for word..
-
프로그래머스 lv2 - 최솟값 만들기BOJ-Algorithm 2022. 11. 10. 16:38
https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입출력 예를 보니까 A에서는 최솟값을, B에서는 최댓값을 찾아 둘을 곱하면 answer를 찾을 수 있는 것처럼 보인다. def solution(A,B): answer = 0 A_copy = A B_copy = B while len(A_copy)>0: answer+= (min(A_copy)*max(B_copy)) A_copy.remove(min(A_copy)) B_copy.remove(max(B_c..