분류 전체보기 137

[python] 평행

문제 아이디어주어진 네 개의 점에서 두 직선을 만들고, 두 직선이 평행한지 여부를 확인하는 문제입니다. 평행한 직선의 특징은 기울기가 같다는 것입니다. 기울기는 두 점의 좌표를 이용하여 계산할 수 있으며, 이 기울기를 비교하여 두 직선이 평행한지 확인할 수 있습니다.아이디어는 다음과 같습니다:주어진 4개의 점에서 가능한 직선 쌍을 구합니다. 이는 두 점씩 선택하여 두 개의 직선을 만드는 것이므로, 3가지 경우의 수가 존재합니다.각 직선의 기울기를 계산하여 서로 비교합니다. 만약 기울기가 같은 직선 쌍이 있으면 평행한 직선이 존재하므로, 그때 1을 반환합니다.평행한 직선이 없다면 0을 반환합니다.시간 복잡도주어진 문제에서 4개의 점으로부터 가능한 직선 쌍을 구하는 경우의 수는 3가지입니다.각 경우에서 기울..

Programmers/1단계 2025.03.31

PCCE 모의고사 2회 10번문제

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(n, board, position): result = [] for b in board: b.insert(0,0) b.append(0) board.insert(0,[0]*len(board[0])) board.append([0]*len(board[0])) for p in position: a, b = p[0]+1, p[1]+1 t = 0 for i in range(-1,2): for j in range(-1,2): t += board[a+i][b+j] if board[a][b]: ..

Programmers 2023.04.03

콜라문제

https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제해석 산수 문제 조금더 생각 해보면 되지 않았나 조금 아쉬운 문제 끝까지 해볼 것 문제풀이 def solution(a, b, n): answer = 0 # 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. # 빈 병의 개수가 콜라를 받기 위해서 필요한 개수보다 크면 반복한다 while (n >= a): remain_bottle = n % a n = (n//a) * b # 마트에..

Programmers/2단계 2023.03.29

[DFS] 2667번 단지번호붙이기

2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 과정 전형적인 DFS, BFS 문제로 두 가지 방법 모두 풀 수 있는 문제입니다. 풀이 ① BFS 그래프의 탐색 시작점을 모르기 때문에 전체를 돌면서 1인 지점에서 탐색을 시작합니다. 탐색 중 1인 부분은 0으로 바꿔 다시 방문하지 않도록 하고 한 번의 BFS가 끝나게 되면 더 이상 확장이 불가능 하므로 마을 하나가 탄생합니다. 이 마을안의 1의 개수들을 출력하면 되므로 다음 코드와 같이 count를 반환하면 됩니다. from collections impor..

백준/BFS,DFS 2023.02.07

[문자열] 이진 변환 반복하기

https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 반복을 하는데 while문을 사용하는 게 핵심이었다. 반복을 할 때마다 문자열을 재초기화를 해준다. 돌리면서 0이 개수를 카운트 해준다. 문자열의 길이를 가지고 이진수 변환 (0b1101) 슬라이싱 필요 0b 제거 문제 코드 def solution(x): answer = [] cnt = 0 zero = 0 while True: if x == '1': break zero = zero + ..

Programmers/2단계 2023.01.06

1406번 에디터

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제풀이 경우 4가지에 따라서 insert를 해준다고 생각을 하였다. 그러나 시간 복잡도가 너무 나왔다. 경우에 따라 스택으로 (자료구조)로 계산하니 통과하였다. 디테일 : 입력을 받을때 여러줄로 받을 필요 없이 range에서도 받을 수 있다. 코드 내풀이 import sys word = sys.stdin.readline().strip() word = list(word) n = int(sys.std..

백준/Stack, Queue 2023.01.05

9093번 단어 뒤집기

https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문제 접근 핵심은 문자열을 거꾸로 정렬하는 것이다. 방법1 . 슬라이싱 사용 방법2. join(reversed(string))사용 방법3. Stack 사용 방법4 for loop 사용 ( revstr = i + revstr) 문제 풀이 슬라이싱 사용 입력을 받자마자 거꾸로 정렬해서 출력 end= ' ' 붙여서 엔터 방지 시킨다. import sys n = int(sys.stdin.readl..

백준/Stack, Queue 2023.01.04

[정렬] 2108번 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 최빈 값을 구하는 게 핵심이다. Counter 라이브러리를 사용해서 횟수에 따라서 딕셔너리를 만들어주면 라이브러리내 most_common() 함수를 사용해 두번째 인자를 가져온다. 코드 내풀이 n = int(input()) nums = [] for _ in range(n) : nums.append(int(input())) # 산술평균 print(round(sum(nums)/n)) # 중앙값 nums.sor..

백준/기초 2023.01.04

[2020 카카오 인턴십] 키패드 누르기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 내풀이 def solution(numbers, hand): answer = '' diction = {1:[0,1],2:[0,2],3:[0,3],4:[1,1],5:[1,2],6:[1,3],7:[2,1],8:[2,2],9:[2,3],10:[3,1],0:[3,2],11:[3,3]} left = [1, 4, 7] right = [3, 6, 9] middle = [2, 5, 8, 0] L = 10 R = 11 # 경우의수 # 1 4 7 * 인 경우 -> "L" # 3 6 9 # 인 경우 -> "R" # 2 5 8..

Programmers/1단계 2022.10.19

[python 문법] dictionary 정리

코딩테스트를 하다가 dictionary에 대해서 잘 몰라서 정리를 해둘려고한다. 목차는 key 값출력, value값 출력, key & value값 출력 하는 방법으로 정리하려고 한다. 목차 1. key & value 값 출력 2. key 값 출력 3. value 값 출력 1 . key & value 값 출력 1. 쓰는 방법 for 키, 값 in 딕셔너리.items(): 반복할 코드 for key, value in {'a': 10, 'b': 20, 'c': 30, 'd': 40}.items(): print(key, value) 2.출력 >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for key, value in x.items(): ... print(key, val..