일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 타입스크립트
- react
- Spring
- OS
- CPU 스케줄링
- 일상
- web
- 프로그래머스
- codeup
- 백준
- C++
- 자료구조
- 알고리즘
- 토이프로젝트
- 정렬
- error
- 공부
- Java
- 협업
- 파이썬
- 기초100제
- js to ts
- 리덕스장바구니
- 스프링
- Redux
- 코드업
- memory
- 분할메모리할당
- Operating System
- react-redux
- Today
- Total
목록알고리즘 (147)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 import sys import math input = sys.stdin.readline t = int(input()) for _ in range(t): x1, y1, x2, y2 = map(int, input().split()) p = int(input()) count = 0 for _ in range(p): cx, cy, cr = map(int, input().split()) dis1 = math.sqrt((x1 - cx) ** 2 + (y1 - cy) ** 2) dis2 = math.sqrt((x2 - cx) ** 2 + (y2 - cy) ** 2) if cr > dis1 and cr > dis2: pass elif cr > dis1: count += 1 elif cr > dis2..
✔ 문제 ✔ 풀이 # https://www.acmicpc.net/problem/1002 import sys import math input = sys.stdin.readline t = int(input()) for _ in range(t): x1, y1, r1, x2, y2, r2 = map(int, input().split()) dis = math.sqrt((x1-x2) ** 2 + (y1-y2) ** 2) if dis == 0 and r1 == r2: print(-1) elif abs(r1 - r2) == dis or r1 + r2 == dis: print(1) elif abs(r1 - r2) < dis < (r1 + r2): print(2) else: print(0) ✔ 설명 원의 방정식과 중심거리..
✔ 문제 ✔ 풀이 import math r = int(input()) uclid = r * r * math.pi taxi = 2 * r * r print(f"{format(uclid, '.6f')}") print(f"{format(taxi, '.6f')}") ✔ 후기 유클리드 기하학과 택시 기하학을 알아야 공식을 사용해 풀 수 있는 문제이다... 기하 안배워서 네?? 네?? 상태로 위키에 적힌 글 읽어봤는데 비유클리드 기하학부터 눈물 났다.. 그래서 짧게 설명을 해준 분의 블로그를 참고해서 풀었다. (사실 기하 안배워서 기하1,2 문제 안풀려고 했던건데... 그렇게 됐다) 참고 링크 https://yoonsang-it.tistory.com/15 백준 3053번 파이썬 풀이: 택시 기하학 백준 3053번 ..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline k = int(input()) length, small = [], [] x, y = [], [] for i in range(6): w, l = map(int, input().split()) length.append([w, l]) if length[i][0] == 1 or length[i][0] == 2: # 가로 x.append(length[i][1]) if length[i][0] == 3 or length[i][0] == 4: #세로 y.append(length[i][1]) for i in range(6): # 작은 사각형의 변 구하기 if length[i][0] == length[(i+2)%6][0]: small.a..
✔ 문제 ✔ 풀이 while True: length = list(map(int, input().split())) a = max(length) length.remove(a) c = min(length) length.remove(c) b = length[0] if a == 0 and b == 0 and c == 0: break if b ** 2 + c ** 2 == a ** 2: print("right") else: print("wrong") ✔ 설명 세 변의 길이를 list로 입력 받은 후 가장 긴 변을 a로 짧은 변을 c로 주고 list에서 해당 값들을 제거한다. 변 b의 길이는 list에 하나 남은 수이기 때문에 list[0]의 값을 준다. a, b, c로 피타고라스 정의를 확인하여 정답을 출력하면 된다.
✔ 문제 ✔ 풀이 rec = [list(map(int, input().split())) for _ in range(3)] for i in range(2): ans = 0 if rec[0][i] == rec[1][i]: ans = rec[2][i] elif rec[0][i] == rec[2][i]: ans = rec[1][i] elif rec[1][i] == rec[2][i]: ans = rec[0][i] print(ans, end=' ') ✔ 설명 주어진 세 점을 가지고 축에 평행한 직사각형을 만들기 위해 필요한 네 번째 점을 찾아야한다. 세 점이 주어졌을 때 x,y에서 혼자만 다른 값을 출력하면 된다. 예를 들어 (5, 5) (5, 7) (7, 5)가 주어지면 x 좌표는 (5, 5, 7) 이고 혼자만 ..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline x, y, w, h = map(int, input().split()) print(min(x, y, w-x, h-y)) ✔ 설명 직사각형의 경계면까지의 거리 중에서 가장 짧은 거리를 구하는 문제이다. 즉, (x, y)에서 직사각형의 테두리 (검은선)까지 가장 짧은 거리를 구하면 된다. (x, y)를 기준으로 4가지 방법이 있는데(초록선, 상하좌우) 이 방법들 중에서 가장 짧은 거리를 구하면 된다. ✔ 후기 점과 점 사이의 거리를 구하는 건 줄 알아서 예제 1번을 손으로 풀어봤는데 답이 다르게 나오길래 뭐가 다른건가 고민했다. 키워드는 '직사각형의 경계면까지의 거리' 이다... 사실 기하 문제에 포함되어 있는 문제라 안풀고..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline s = input().rstrip() res = set() for i in range(len(s)): for j in range(i, len(s)): temp = s[i:j+1] res.add(temp) print(len(res)) ✔ 설명 이중 for문을 돌면서 s[i:j+1]로 슬라이싱 한 문자열을 set인 res에 저장하면 된다. ✔ 후기 1개의 문자부터 len(s)개의 문자열까지 어떻게 나눠야하나 고민했는데 슬라이싱하는 방법이 있었다 ^_ㅜ 이것도 이중 for문을 사용하면 되는거였는데 기억이 나지 않아서 오래 고민했다 ( -̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥᷄◞ω◟-̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥̥..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) a = set(list(map(int, input().split()))) b = set(list(map(int, input().split()))) print(len(a ^ b)) ✔ 설명 파이썬 set 자료형을 사용하면 교집합, 합집합, 차집합, 대칭차집합 등을 이용할 수 있다. 문제와 같이 대칭 차집합을 구할려면 set1 ^ set2를 하면 된다.
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) dict = {} res = [] for i in range(n): x = input().rstrip() dict[x] = 0 for j in range(m): x = input().rstrip() if x in dict: res.append(x) else: dict[x] = 0 res.sort() print(len(res)) for k in res: print(k) ✔ 설명 듣도 못한 사람을 dictionary에 저장, 후에 보도 못한 사람을 dictionary에 저장할 때 이미 dict에 있다면 res에 저장, 없다면 그대로 dict에 저장한다. 후에 res..