전체 글 666

[백준] 17135 캐슬디펜스 python

https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 그래프 탐색이 가미된 브루트포스 문제이고 거기에 시뮬레이션까지 덤으로 꽉꽉 담아준다.(궁수 세명을 배치하는 게 브루트포스, 매 턴 확인하는 시뮬레이션, 턴마다 궁수가 죽이는 적을 찾는 게 그래프 탐색이다.) 궁수의 배치 조합을 백트래킹이나 반복문으로 직접 만들수 있긴 하지만 더빠른 itertools.combinations를 사용했다. 궁수의 배치가 끝나면 턴을 진행했다. 매 턴마다 한칸씩 아래로 내려가게 되..

STUDY/Algorithm 2022.03.24

[백준] 2234 성곽 python

https://www.acmicpc.net/problem/2234 2234번: 성곽 첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 N개의 정수로 벽에 대한 정보가 주어진다. 벽에 대한 정보는 한 정수로 주어지는데, 서쪽에 벽이 있을 때는 1을, 북쪽에 벽이 있을 때는 2를, www.acmicpc.net 그래프 탐색 문제이다. 문제를 풀기 전 다음 순서로 구현하려고 했다. 1. 입력 우선 방 개수와 크기를 알아야하므로 방의 개수를 저장하는 변수(num_room)와 각 방 크기를 저장하는 리스트(room_size)를 만들었다. 그리고 visit 배열을 만들어서 방문한 점인지 파악했다. 2. 그래프(이차원 배열) 탐색 2-1. 방 개수와 크기 확인 모든 자리를 순회하면서 BFS를 진행했다. 방문..

STUDY/Algorithm 2022.03.23

[백준] 17142 연구소 python

https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 삼성 기출 문제이다. 이전에 풀었던 연구소 문제를 풀었는데 그 문제는 벽을 생성해서 안전구역을 최대화 시키는 것이었다. 이번 연구소 문제는 바이러스를 M개 활성화 시켜서 전체 구역을 감염시키는 최소 시간을 구하면 된다. 이 문제를 풀기 위해 다음과 같은 순서로 구현했다. 1) 입력을 받을 때 지도(이차원배열, _map)을 생성하고, 바이러스의 모든 위치를 파악한다(viruses). 2) 모든 바이러스에서 ..

STUDY/Algorithm 2022.03.22

이번 주를 돌아보며(0314 ~ 0320)

하루 지나쓰는 이번주 회고 (정확히는 지난주 회고) 1. 취업준비 상반기 시즌이 다시 도래하여 나또한 자기소개서를 쓰느라 바빴다. 월, 수에 면접을 봤는데 아직 입사 확정이 된게 없다보니 꾸준히 쓰고있다. 주로 쓰는 직무는 임베디드 개발과 웹 프론트엔드이다. 임베디드 개발로 가고 싶지만 쓸수있는 곳이 대부분 중견 이상인 곳들이고 그나마도 대전엔 없는것같다. 그래서 프론트엔드도 같이 준비하고 있는데 얘도 대전엔 없다. 서울, 경기에 스타트업이나 중소기업이 많긴한데 올라가기위한 돈이 없어서 참... 지난번 프로그래머스 챌린지에서 게임 회사의 웹 프론트엔드로 썼는데 나름 좋게 봐주셨는지 면접 일정이 잡혔다. 최근엔 임베디드 개발을 배우다보니 javascript나 react랑 조금 멀어졌는데 면접을 위해서라도 ..

OTHERS/내 생각 2022.03.21

[SWEA] 5658. 보물상자 비밀번호 python, c++

SW Expert Academy 5658. [모의 SW 역량테스트] 보물상자 비밀번호 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 삼성 기출을 대비한 문제. 문자열을 사용하는 문제이고 쉬운 문제이다. 문자열을 회전시켜가며 k번째 큰 수를 출력하면된다. 문자열을 회전시킬때 조금 쉽게 하기위해 받은 문자열의 맨 처음글자부터 N//4까지의 글자를 복사해서 뒤에 넣어주었고 반복문을 사용해서 특정 길이까지 잘라서 set에 넣어주었다. set은 중복값이 제거되므로 넣어주기만 하면 된다. 모든 문자열을 순회한 이후엔 정렬을 한뒤 찾는 자리의 값을 반환했다. def find_number(string, string_size..

STUDY/Algorithm 2022.03.17

[SWEA] 5650 핀볼 게임

SW Expert Academy 5650. [모의 SW 역량테스트] 핀볼 게임 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 구현, 시뮬레이션 문제이고 딱 삼성 기출같은 문제였다. 문제 자체는 어렵진 않았고 꽤 복잡했다. 입력을 받고 모든 점마다 시뮬레이션을 돌린뒤 가장 점수가 높은 것을 출력하면 되었는데 시뮬레이션 돌릴때 꽤 애를 먹었다. 시뮬레이션 돌릴땐 블록이 아닌 모든 점에 대해서 진행했는데 최대한 중복되는 점들을 제거 하려고 노력했다. 예를 들면 시작하자마자 벽을 만나는 경우를 제거했고(이 부분은 1점을 줘야했는지 고민하긴했다.), 진행 방향의 다음 점이 빈 곳이면 중복이 되므로 제거했다. 조건이 되..

STUDY/Algorithm 2022.03.16

[백준] 14890 경사로 python

https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 구현 문제여서 그냥 풀기만 하면된다.(사람마다 풀이가 다 다를듯...) # import sys; input = sys.stdin.readline def check(): global N, L, _map ret = 0 for r in range(N): h = _map[r][0] cnt = 1 for c in range(1, N): if h == _map[r][c]: cnt += 1 h = _map[r][c] continue..

STUDY/Algorithm 2022.03.15

이번 주를 돌아보며(0307 ~ 0313)

1. 서울가는길 내일 오전 일찍 면접이 있어 서울로 올라가는 중이다. 서울 올라간 김에 놀다오고 싶은데 코로나 걸린 사람들이 많아서 아는 사람도 보기 힘든 실정이라 빨리 내려갈듯 하다. 오랜만에 면접이라 되게 긴장되는데 긴장하면 할수록 면접에서 말을 못하기 때문에 최대한 긴장을 안하려고 노력하고 있다. 붙는다는 생각은 하지않고있지만 떨지만 않으면 좋겠다. 2. 코딩테스트 토요일 두번의 코딩테스트를 봤다. 하나는 sk ict이고 하나는 프론트엔드 데브매칭이다. Sk ict는 네문제였고 모두 알고리즘 문제였다. 테스트 케이스는 어렵지 않게 통과했으나 바운더리 케이스를 돌릴땐 시간초과가 날 것같다. 뭐 제출하면 끝이라 점수가 얼마나 맞았는지는 모르지만. 테스트 케이스만 치면 4솔인데 부분 점수로는 얼마 못받겠..

OTHERS/내 생각 2022.03.13

[백준] 20551 Sort마스터 배지훈의 후계자 python

https://www.acmicpc.net/problem/20551 20551번: Sort 마스터 배지훈의 후계자 지훈이는 Sort 마스터다. 오랫동안 Sort 마스터 자리를 지켜온 지훈이는 이제 마스터 자리를 후계자에게 물려주려고 한다. 수많은 제자들 중에 후계자를 고르기 위해서 지훈이는 제자들에게 문제 www.acmicpc.net 이진탐색 문제이고 python 함수 bisect를 사용해서 풀었다. # import sys; input = sys.stdin.readline from bisect import bisect_left def index(a, x): i = bisect_left(a, x) if i != len(a) and a[i] == x: return i return -1 def main(): ..

STUDY/Algorithm 2022.03.13

[백준] 1439 뒤집기 C,C++

https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 그리디 문제이다. 문자열이 주어졌을때 뒤집어서 같은 숫자를 만들어야한다. 뒤집는 횟수를 구하기 위해 값이 바뀔때마다 하나씩 체크하고 2로 나누어주면된다. (2로 나눈 이유는 예제 입출력에서 규칙을 찾아내었다.) #include int main() { char s[1000000]; int cnt = 1, i; scanf("%s", s); for (i = 1; s[i] != '\0'; i++) { i..

STUDY/Algorithm 2022.03.12