Study 85

[BOJ] 9019. DSLR

www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 문제: DSLR이라는 4가지 명령어로 주어진 숫자를 목표값으로 최소한의 명령을 통해 바꾸어라. 문제 이해하기!! 아, 이 문제 너무 깐깐한 문제였습니다. 문제에 테스트케이스의 수가 나와있지 않고 시간제한이 6초라니.... 일단 알아본봐로는 테케 수가 최대 1만개라고 합니다! 참고^^ 이 문제를 풀려면 BFS 방법을 써야하는데요, 일단 4가지 명령어는 쉽게 구현됩니다. 하지만 여기서 DFS를 써버리면..

Study/BOJ 2021.07.01

[CSSU] SQL 정리

세 번째 주제 - SQL 세 번째 주제는 Mysql을 기반으로 한 SQL입니다. 사실, 기본적인 구문은 잘 알고 있지만, 이번에 어려운 JOIN 연산까지 싹 살펴보려고 선택했습니다. (이 글을 쓰기 위해서 프로그래머스의 SQL 모든 문제를 풀고 왔어요 ㅎㅎ) 1. SELECT SELECT는 정말 기본적인 문법이에요. 데이터를 보기 위해서는 SELECT가 있어야 무조건 동작하죠. 밑에 있는 쿼리문을 보면 "*"를 SELECT 했다고 나옵니다. SELECT * FROM data; "*"는 모든 컬럼을 이야기하는 것으로 data라는 테이블에서 모든 데이터가 나오겠죠. 하지만 이렇게 기본적으로 쓰진 않죠! SELECT는 거의 필연적으로 WHERE이라는 구문이 따라옵니다. data라는 테이블에 밑과 같이 데이터가..

Study/CSSU 2021.06.25

[BOJ] 10026. 적록색약

www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제: 적록색약이 아닌 사람이 봤을 때의 구역의 개수와 적록색약인 사람이 봤을 때의 구역의 수를 공백으로 구분해 출력하라. 문제 이해하기!! 구역을 나누는 것을 구해야 되는 문제입니다. 문제에서 나오는 적록색약은 미끼로 그냥 두 번 "R"을 "G"로 바꾸어 한 번 더 구하면 되는 문제였습니다. 그렇다면 어떻게 구역을 나눌까요. 저는 DFS로 완전탐색을 실시하였습니다. 해당 구역들을 찾기 위해서는 각 구역..

Study/BOJ 2021.06.24

[BOJ] 16928. 뱀과 사다리 게임

www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제: 뱀과 사다리 게임에서 주사위를 최소로 굴려 1부터 100까지 가장 빠르게 도착할 수 있게 하라. 문제 이해하기!! 뱀과 사다리 게임은 예전에 많이 해봤던 추억의 놀이죠. 그래서 문제를 쉽게 이해할 수 있었던 것 같습니다. 1부터 100까지이므로 모든 경우의 수를 다 확인하면 됩니다 ㅎㅎ (완전탐색!!) 다만, 주의할 점은 뱀으로 이동하면 100번까지 더 빨라..

Study/BOJ 2021.06.23

[BOJ] 1389. 케빈 베이컨의 6단계 법칙

www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 문제: 케빈 베이컨의 수가 최소인 사람의 번호를 출력하라. 문제 이해하기!! 케빈 베이컨이라하면 그래프의 한 노드에서 다른 노드로 최소 몇번을 걸쳐야 거기로 갈 수 있는지를 구하면 되는 문제입니다. 즉, BFS를 쓰면 되는 문제라고 볼 수 있습니다. ※ 다만, DFS를 쓰면 틀리니 주의하세요! DFS를 쓰면 틀리는 이유는 깊이와 너비 우선 방식의 노드 접근법을 생..

Study/BOJ 2021.06.23

[BOJ] 13418. 학교 탐방하기

www.acmicpc.net/problem/13418 13418번: 학교 탐방하기 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 건물의 개수 N(1≤N≤1,000)과 도로의 개수 M(1≤M≤n*(n-1)/2) 이 주어진다. 입력의 두 번째 줄 www.acmicpc.net 문제: 피로도가 최악인 경로와 최적인 경로의 피로도 차이를 구하라. 문제 이해하기!! 학교의 입구부터 학교 건물을 모두 소개해주는 문제입니다. 모든 경로를 탐방해야하므로 최소 스패닝 트리 문제라고 할 수 있습니다. 그러므로 이제 제일 잘 알려진 프림 알고리즘과 크루스칼 알고리즘 중 하나를 선택하여 풀면됩니다. 음... 혹시나 둘 다 모르는 분은 다익스트라가 익숙하시면 프림으로 하시고..

Study/BOJ 2021.06.21

[BOJ] 1238. 파티

www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 문제: 파티에 다녀오는 최단 거리(왕복)를 구하라. 문제 이해하기!! 다익스트라 문제였습니다. 하지만 다익스트라를 한 번만에 푸는 것이 아닌 단 방향 길을 양 방향으로 생각해야 되는 문제에요. 시작하는 지점이 여러 개라고 모두 생각하다가는 시간초과가 날 수 있습니다. 제가 푼 방식을 설명하자면, 1. 먼저 도착지점에서 각 마을 파티사람들의 오는 최소거리를 다익스트라로 찾습니다. 2..

Study/BOJ 2021.06.07

[BOJ] 14503. 로봇 청소기

www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제: 로봇 청소기가 청소하는 칸의 개수를 출력하라. 문제 이해하기!! 전형적인 구현 문제입니다. 문제에 주어진대로 따라하면 코드를 작성하면 풀 수 있는데, 다만 얼마나 효율적으로 짜냐, 어떤 방식으로 짜냐가 중요하죠!! 저는 밑의 방식으로 풀게 되었습니다. 그 방식을 설명하자면!! 1. 각 방향으로 한 칸 전진하는 것을 함수로 만들어 줍니다. 2. 주어진 행동을 계속 반복하기 위해 while True로 반복..

Study/BOJ 2021.05.26

[Python] Node부터 구현한 큐, 스택

이번에 면접에서 스택을 파이썬으로 구현하려다가... Node부터 구현하는 기초적인 부분을 처음부터 못 하겠더라구요. Class도 잘 사용하지 않아서 __init__도 생각나지 않고, self도 생각나지 않았습니다. 반성하는 마음으로 큐와 스택을 Node부터 구현해 보았습니다. 이번 면접보고 되게 많이 배운 것 같습니다. 제가 답을 못 해서 그렇지 뭐...^^ 기본적인 부분만 구현한 큐와 스택입니다. 큐 코드: class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.tail = None self.head = None self.count = 0 def is_empty(..

반응형