프로그래머스 코딩테스트 연습 kit에 있는 스택/큐 문제를 풀어보았다. 🎱 프로그래머스 - 올바른 괄호 1. 문제설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예시 2. 문제 풀이 def solution(s): answer = True stack = [] for i in s: if i == '(': sta..
프로그래머스 코딩테스트 연습 kit에 있는 DFS/BFS 문제를 풀어보았다. 🎱 프로그래머스 - 단어 변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target..
프로그래머스 코딩테스트 연습 kit에 있는 DFS/BFS 문제를 풀어보았다. 🎱 프로그래머스 - 타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. 입출력 예 [1, 1, 1,..
'이것이 취업을 위한 코딩 테스트다 with 파이썬' 서적의 내용을 바탕으로 작성한 글입니다. 실전문제1 : 음료수 얼려 먹기 문제 N × M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. 다음의 4 × 5 얼음 틀 예시에서는 아이스크림이 총 3개가 생성된다 입력 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다. (1
📚 자료구조 기초 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS를 꼽을 수 있는데 이 두 알고리즘의 원리를 제대로 이해해야 코딩 테스트의 탐색 문제 유형을 풀 수 있다. 그런데 DFS와 BFS를 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 전제되어야 하므로 사전 학습으로 스택과 큐, 재귀 함수를 간단히 정리하고자 한다. 자료구조란 '데이터를 표현하고 관리하고 처리하기 위한 구조'를 의미한다. 그 중 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성된다. 삽입(Push): 데이터를 삽입한다. 삭제(Pop): 데이터를 삭..
구현 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 이코테 책에서는 완전 탐색, 시뮬레이션 유형을 모두 구현 유형으로 묶어 다룬다. 완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 것 예제 1 : 상하좌우 문제 여행가 A는 N × N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 × 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다 계획서에는 하나의 줄에 띄어쓰기를 기..
그리디 알고리즘 현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 특징 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 제시해준다. 대체로 정렬 알고리즘과 짝을 이루어 출제된다. 예제 대표적인 문제로 거스름돈 문제가 있다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. n = 1260 count = 0 coin_types = [500, 100, 50, 10] for coin in coin_types: count += n // coin # ..
💛 Python3 코드 백준 2738 ➤ N*M크기의 두 행렬이 주어졌을 때, 두 행렬을 더하기 A, B = [], [] N, M = map(int, input().split()) for row in range(N): row = list(map(int, input().split())) A.append(row) for row in range(N): row = list(map(int, input().split())) B.append(row) for row in range(N): for col in range(M): print(A[row][col] + B[row][col], end=' ') print() 한 행씩 입력을 받으므로, 행의 크기만큼 입력을 반복하여 받는다. 입력 받은 행을 행렬에 삽입한다. 백준..
💛 Python3 코드 백준 10807 n = int(input()) n_list = list(map(int, input().split())) v = int(input()) print(n_list.count(v)) ⭐️ 1차원 배열에서 간단하게 해당 요소가 몇 개 들어있는지 알고싶다면 count() 쓰기. 백준 5597 students = [i for i in range(1,31)] for _ in range(28): applied = int(input()) students.remove(applied) #소거 print(min(students)) print(max(students)) 교실엔 학생이 30명이 있다고 하니깐 1 ~ 30까지 수를 student 리스트에 저장한다. applied 변수에 할당되고..
코테 준비를 처음으로 시작! 일단 백준에서 파이썬 기초 문제집을 골라서 풀고 다시 파이썬에 대한 감을 익힐 예정이다. https://www.acmicpc.net/step 💛 Python3 코드 백준 2884 H, M = map(int, input().split()) if M = 60): min -= 60 hour +..