일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- icmp
- 컴퓨터 동작방식
- 파이썬 정렬
- 리스트
- 이코테
- 쉽게 배우는 데이터 통신과 컴퓨터 네트워크
- OSI7계층모델
- 데이터통신
- GIT
- 데이터 통신과 컴퓨터 네트워크
- 기억장치
- DP
- 시스템 소프트웨어
- 파이썬 자료형
- 파이썬 연산자
- 쿠키
- 노마드코더
- IT5분잡학사전
- 이것이 취업을 위한 코딩테스트다
- 북클럽
- CS
- ARP
- RARP
- 노개북
- 컴퓨터네트워크
- data type
- 라우팅
- sort()
- 자료형
- 이것이 취업을 위한 코딩 테스트다
- Today
- Total
목록Algorithm & Data structure/알고리즘 문제 풀이 (25)
뚝딱햄 탈출기
접근 방식 처음엔 커서를 하나의 문자열로 두고 편집기 명령어에 따라 이동시키려 했다. 알고리즘 분류가 스택인걸 먼저 확인하고 문제를 접했는데, 커서를 이동시키는 방식을 스택에 대입시키기가 쉽지 않아서 많은 고민을 했는데, 두개의 스택을 사용하면 된다는 아이디어를 접했다. 스택 유형의 문제를 많이 풀어보지 않은 나에겐 꽤나 센세이션 했다 두개의 스택을 만든다. 이를 왼쪽 스택과 오른쪽 스택이라고 가정했다. 두 스택 사이에 커서가 있다고 생각하자. 커서는 고정이 커서 대신 스택의 요소들이 움직인다. 커서는 초기에 문장의 맨 뒤에 위치하고 있다고 했으므로 왼쪽 스택에는 초기 문자열(입력값) 모두를 넣어두고, 오른쪽 스택은 비워둔다. ✅ Solution 1 import sys stack_l = list(sys...
❌ 접근 방식 교집합을 구한 후, A + B의 개수에서 2 * (A ∩ B의 개수)를 빼야겠다고 생각했다. 교집합을 구하기 위해 이중 for문을 사용해 A와 B에 중복되는 요소의 개수 즉 교집합의 개수를 구했다. ❌ Solution 1 - 시간 초과 import sys an, bn = map(int, sys.stdin.readline().split()) a = list(map(int, sys.stdin.readline().split())) b = list(map(int, sys.stdin.readline().split())) cnt = 0 for i in a: for j in b: if i == j: # 교집합 cnt += 1 print(an + bn - cnt * 2) 교집합을 구하는 연산자나 라이브러..
접근 방식 접근을 어떻게 해야 할지 아이디어를 떠올리는데 꽤나 걸렸다. 핵심은 정렬!! 가장 큰 종이 조각의 넓이를 출력하려면, 어떤 식으로 잘린 상태인지 알아야 한다. 가로 세로 각각 가장 긴 길이를 가진 사각형이 가장 큰 넓이를 가진 사각형! 따라서 사각형이 가질 수 있는 가로와 세로 길이를 알아야 한다. 우선 가로, 세로 잘린 점들을 넣을 배열을 각각 선언하고 가로 세로 입력값과, 원래 직사각형의 가로 세로 원점과 끝점을 선언한 배열에 각각 넣는다. 그 후 정렬을 하면 각 배열에서 element와 다음(또는 이전) element의 차를 이용해 길이를 구할 수 있다. 가장 큰 가로/세로 길이를 곱해 출력한다. 잘린 사각형들의 가로/세로 길이를 구하기 위해서는 정렬을 해야 한다. ⭐ 세로 배열에는 입력..
핀토스에 절여진 뇌를 부여잡고 오랜만에 알고리즘 풀었당!👩💻 수월하게 풀었지만 백분율 출력 방식에 대해 배워 포스팅을 끄적여본다✍️ 접근 방식 한 줄씩 입력 받고 (c 줄 만큼) 각 줄의 평균 점수를 구해서 각각의 점수가 평균치를 넘으면 cnt += 1 학생 수에 대한 cnt의 비율을 출력한다. 비율은 반올림해 소수점 셋째 자리까지 출력해야 한다. => f-string 이용 ✅ Solution 1 import sys c = int(sys.stdin.readline()) # tc 개수 for _ in range(c): n = list(map(int, sys.stdin.readline().split())) avg = (sum(n) - n[0]) / n[0] cnt = 0 for i in range(1, l..