전체 글

PS/프로그래머스

Lv1 숫자 문자열과 영단어

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2021 카카오 채용연계형 인턴십 문제로 나왔던 문제인 거 같다. 난이도로 봐서는 제일 쉬운 문제... 문제를 간단하게 말하면 one4seveneight라는 문자열이 들어오면 1478의 숫자로 반환하는 문제이다. 파이썬으로 풀었으면 정말 간단하게 replaceAll을 활용해서 풀었을 것이다. 여기서 생각이 나서 정규식을 활용해서 문제를 풀었다. const solution = (s) => { const words = ["zero", "one", "two", "three", "four", "five", "six"..

PS/백준

골드5 토마토(7576)

7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 최소라는 단어를 보고 바로 BFS를 사용한다는 것을 알았다. 그렇게 처음에는 BFS를 활용해서 풀었는데 생각해보니 한 곳에서 시작한 첫 포인트가 토마토 전체를 익은 상태로 만들어 더 많은 일 수가 나왔다. 시작점이 동시에 출발해야하는 것을 깨닫고, 이번 알고리즘2 수업에서 들은 Multi Source BFS를 떠올려서 queue에 시작점을 넣어 탐색하게 만들었다. 그렇게 푸니 최소 일수가 나온것이다. import sys from collectio..

PS/백준

실버1 나이트의 이동(7562)

7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 처음 이문제를 풀었는데 계속 답이 나오지 않았다. matrix를 출력해보니 한 방향으로 가지 않는 것이였다. 그래서 살펴보니 directions의 배열에 잘못 입력을 해서 문제였다. 배열을 잘 고쳐서 8방향 전부 갈 수 있게 만들어 풀 수 있었다. import sys from collections import deque input = sys.stdin.readline directions = [(-2, -1), (-1, -2), (2, 1), (1, 2), (-2,..

PS/프로그래머스

Lv1 3진법 뒤집기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 문제에서 3진법을 바꾸는 법을 while로 구현할려고 했는데, toString이 이런 기능이 있다는 것을 알게 되어 쉽게 구현할 수 있었다. const solution = (n) => { return parseInt([...n.toString(3)].reverse().join(""), 3); }; 숫자 n이 들어오면 toString메서드를 활용해서 바꿀 진법을 넣어준다. 원래 2, 8, 16진법으로만 가능할 줄 알았는데 다른 수도 된다는 것을 알게 되었다. 그렇게 변환된 진법을 활용해서 스프레드 연산자를..

PS/프로그래머스

Lv1 문자열 다루기 기본

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Lv1 문제라 큰 어려움 없이 풀 수 있었다. 처음에는 parseInt로 숫자가 있는지 확인하는 방법을 사용했지만, JS의 정규식을 활용하면 더 간단하게 풀 수 있다고 생각해서 정규식을 활용해서 풀었다. const solution = (s) => /^\d{4}$|^\d{6}$/.test(s); 위 풀이에 대한 간단하게 설명하면 아래와 같다. ^: 문자열의 시작을 나타냅니다. \d: 숫자(digit)를 나타냅니다. \d{4}는 정확히 4개의 숫자로 이루어진 부분을 의미합니다. $: 문자열의 끝을 나타냅니다. |..

PS/백준

실버2 유기농 배추(1012)

1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 이 문제는 상하좌우를 탐색하면서 연결된 컴포넌트를 다 이어서 그 연결된 컴포넌트가 몇 개인지 구하면 되는 문제였다. 저번에 푼 바이러스문제와 비슷해서 금방 풀 수 있었다. import sys from collections import deque input = sys.stdin.readline directions = [(-1, 0), (0, -1), (1, 0), (0, 1)] def bfs(x, y, matrix): queue = deque([(x, y)]) matrix[x..

PS/백준

실버3 바이러스(2606)

2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 바이러스 문제는 DFS와 BFS를 활용해서 풀 수 있는 간단한 문제입니다. 알고리즘2 수강하면서 풀다보니 CC(Connected Component)배우면서 유형이 비슷하다고 생각했습니다. # 바이러스 # https://www.acmicpc.net/problem/2606 import sys from collections import deque input = sys.stdin.readline def bfs(graph, visited, node): queue = deque..

Skill Up/Algorithm Theory

[알고리즘] - DFS & BFS 정리

Graph 그래프는 정점(vertex)과 이들을 연결하는 간선(edge)으로 이루어진 데이터 구조를 말합니다. 그래프는 지도나 인터넷과 같은 물리적인 연결 관계를 나타내기 위해 사용되기도 하지만 그 외 다양한 추상적인 연관성을 나타내기 위해서도 사용됩니다. 이러한 그래프 중 간선에 방향성이 있는 그래프를 방향(direction)이 있다는 의미로 directed graph라 하며, 반대로 간선에 방향성이 없는 그래프를 undirected graph라 합니다. 그래프 탐색 방법에는 대표적으로 2가지가 있습니다. 깊이 우선 탐색인 DFS와 너비 우선 탐색인 DFS가 있습니다. 아래에는 2가지 방법에 대한 설명을 적었습니다. DFS (Depth First Search) - 깊이 우선 탐색 DFS 방법은 root..

jjw000628
wldnd2