본문 바로가기

Python

(15)
[백준] 1822. 차집합 백준 1822. 차집합 1822번: 차집합 첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소 www.acmicpc.net ✓ 난이도 : 실버 4 ✓ 문제 풀이 : 이분탐색, set 함수 사용 (차집합) import math import sys input = sys.stdin.readline n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) res = [] b.sort..
[백준] 10815. 숫자 카드 백준 10815. 숫자 카드 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net ✓ 난이도 : 실버 5 ✓ 문제 풀이 : 이분탐색 백준 1920. 수찾기와 유사한 문제 import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) m = int(input()) chk = list(map(int, input().split())) num.sort() for c in chk: s, e =..
[백준] 10816. 숫자 카드 2 백준 10816. 숫자카드 2 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net ✓ 실버 4 ✓ 문제풀이 : 카운터 함수 from collections import Counter import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) m = int(input()) chk = list(map(int, input().split())) res = [] count = Coun..
[백준] 1920. 수찾기 백준 1920. 수찾기 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net ✓ 난이도 : 실버 4 ✓ 문제풀이 : 이분탐색 조건에서 정수의 수가 100,000으로 주어졌기 때문에 O(NlogN) 정도의 시간복잡도가 요구된다. 이분탐색 알고리즘의 경우 시간복잡도가 O(logN)이므로 해당 조건을 만족할 수 있다. import sys import time input = sys.stdin.readline n = int(input()) arr = list(map(int, ..
[백준] 2330번 : 수 고르기 백준 2330 수 고르기 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net ✓ 문제 풀이 : 투포인터 알고리즘 수가 크기 때문에 반복문을 1번만 사용해야한다. 투포인터 알고리즘으로 탐색하면 빠르게 수를 고를 수 있다. import sys input = sys.stdin.readline n, m = map(int, input().split()) a = [int(input()) for _ in range(n)] a.sort() s, e = 0, 1 res = float('inf') while s
[백준] 구현 기초 - 별 찍기 1~7 백준 2438. 별찍기 1 더보기 n = int(input()) for i in range(1, n+1): print("*"*i) 백준 2439. 별 찍기 - 2 더보기 n = int(input()) for i in range(1, n+1): print(" "*(n-i) + "*"*i) 백준 2440. 별 찍기 - 3 더보기 n = int(input()) for i in range(n, 0, -1): print("*"*i) 백준 2441. 별 찍기 - 4 더보기 n = int(input()) for i in range(n, 0, -1): print(" "*(n-i) + "*"*i) 백준 2442. 별 찍기 - 5 더보기 n = int(input()) for i in range(1, n+1): print(..
[자료구조] 자료구조(Data Structure)란? 1. 자료구조란? 자료구조란 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다. 2. 자료구조를 왜 사용할까? 데이터의 특성에 따라 데이터를 체계적으로 구조화하기 때문에 효율적으로 처리할 수 있다. 또한 자료구조를 선택함으로써 알고리즘의 효율을 높일 수 있다. 즉, 메모리 공간을 효율적으로 사용할 수 있고, 코드상에서 효율적으로 처리할 수 있다. 3. 대표적인 자료구조 1. 배열 (Array) 2. 큐 (Queue) 3. 스택 (Stack) 4. 연결 리스트 (Linked List) 5. 해쉬 테이블 (Hash Table) 6. 트리 (Tree) 7. 힙 (Heap) 8. 그래프 (Graph) 티스토리 오랜만이다. 변명을하자면, 로그인이 잘 안됐고 정보처리기사나 면접(떨어짐.. 속상) ..
[프로그래머스] 합성수 찾기 난이도 : 코딩테스트 입문 (Lv.0) 정답률 : 85% 문제 : [프로그래머스] 합성수 찾기 def solution(n): answer = 0 for i in range(4, n+1): cnt = 0 for j in range(1, i+1): if i%j == 0: cnt += 1 if cnt >= 3: answer += 1 return answer ▶ 우선 합성수는 4부터 시작한다. (1, 2, 3의 경우는 약수가 1과 자신 뿐이기 때문에 총 2개 존재하기 때문이다.) 따라서 4부터 n까지 기본 범위를 설정 한 후 (for i in range(4, n+1)) 해당하는 값 (i)의 약수의 개수(cnt)를 구해준다. 구한 개수의 값이 3 이상인 경우 답을 체크해준다. (answer +=..