본문 바로가기

반응형

알고리즘 문제풀이

(66)
[Codeforces] Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) 요즘 코드포스에 빠져살았었습니다. 보면 한동안 알고리즘 문제풀이가 안올라왔을 적이 조금 있을탠데, 이 때가 바로 코포에 빠져살 때입니다!처음에 영어문제이고, 2시간에 7문제 풀이는 익숙하지가 않아서 굉장히 해매느라 더 늦게 푼 것 같습니다 ㅠㅠㅠ 어쨌든, 이 코포 덕분에 알고리즘 문제풀이 올리는것들도 엄청 미뤄져서 빨리 올려야겠습니다! 지금부터라도!! 후우.. 19문제를 내리 올려야하다니 너무 걱정이 많군요! 빠르게 시작하겠습니다. A. Single Wildcard Pattern Matchingtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given two ..
[프로그래머스] 2018 섬머코딩! 프로그래머스라는 홈페이지에도 굉장히 많은 알고리즘 문제들이 있다는 것을 확인했습니다. 특히, 카카오 공채 문제들이라던지, 엄청 많이 있죠! 오늘은 이중에서 2018 섬머 코딩 4 문제를 풀어보겠습니다!! https://programmers.co.kr/learn/challenges 문제는 위에 링크를 클릭하시면 볼 수 있습니다!! 1. 숫자 게임 문제 설명xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다.각 사원은 딱 한 번씩 경기를 합니다.각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자..
[SW Expert Academy] 8월의 마지막 코드배틀 어느덧 8월도 끝나부렀네요.진짜 생각해보면 시간이 빠릅니다. 여름 핵더웠는데, 이제는 조금 괜찮아진것도 같고,산 다닐때 모기도 정말 드럽게 많았는데, 요즘은 또 잠잠하더라구요. 어쨌든, 화요일마다 시행하는 코드배틀! 오늘도 시작하겠습니다. SW Expert Academy의 문제들은 무단 복제가 금지되어있기 때문에 링크로 대체하겠습니다! 클릭시 이동합니다. 5431. 민석이의 과제 체크하기 어떻게 풀까? 카운팅 소팅을 응용합시다! 우선, 과재의 개수 N만큼 check 배열을 만듭니다.그리고 입력이 들어올때마다 해당 check배열을 true로 만들어줍니다. 그리고 입력이 끝나면, 이제 1부터 N까지 순회하면서 check배열이 false라면 해당 수를 출력하면 쉽게 구할 수 있을 것 입니다! 코드 123456..
[BOJ] 5213. 과외맨 과외맨클릭시 이동합니다. 어떻게 풀까? 굉장히 힘들었습니다.우선, 문제의 절반이 별로 문제 푸는데 도움이 안된다는 사실에 좌절했습니다. 허허 이 문제는 BFS문제이지만, 단계를 잘 설정해서 수행해야 한다는 것이 중요합니다.문제를 풀기 위해서 생각해야 할 것들에 대해서 생각해 봅시다. 1. 타일들 간에 이동가능한 인접 행렬을 만들어야 합니다.2. BFS를 통해서 최단 거리를 찾습니다.3. 최단 거리를 찾는 경로를 어떻게 출력할지 생각해야 합니다. 이 중에서 가장 어려운 것은 1번 입니다. 타일을 어떻게 붙일지에 대해서 생각해 봅시다! 일단, 약간 귀찮은 점은 홀수행과 짝수행에서 타일의 개수가 다르다는 것입니다! 우선은, 타일을 모두 왼쪽으로 밀어넣어서 생각해봅시다!또한, 타일에 여러 정보가 있기 때문에 따..
[BOJ] 11559. Puyo Puyo Puyo Puyo클릭시 이동합니다. 어떻게 풀까? 시뮬레이션문제입니다!시뮬레이션 문제는 문제에서 요구하는 것들에 대해서 구조체와 함수를 잘 만들어야합니다! 해당 문제에서 요구하는 것은 크게 두 가지 입니다. 1. 상 하 좌 우로 4개의 블럭들이 모여있으면 터뜨려라!2. 빈 공간이 생기면 아래로 내려라! 두 가지 모두 이전에 했던 밍이의 블록게임과 유사한 작업입니다.만약, 글만으로 잘 이해가 안된다면, 해당 포스팅을 한번 보시는 것을 추천드립니다! 그럼 우선, 1번 작업에 대해 프로그래밍을 해봅시다. 우선, 맵을 다 보면서 블록이 있는지 확인합니다. 그리고, 만약 블록이 있다면,아래 단계를 순서대로 실행합니다. 1. 블록의 상하좌우에 같은 블록이 있으면 큐에 담고, visit check를 해준다.2. 블록..
[SW Expert Academy] 5360. 모든 섬의 통신 비용 5360. 모든 섬의 통신 비용 SW Expert Academy의 문제들은 보안문제가 있기 때문에 링크로 대체합니다.클릭시 이동합니다! 어떻게 풀까? 저도 해당문제를 풀지 못해 갓갓분들의 도움을 받았음을 미리 알려드립니다! 우선, 이 문제는 싸이클들을 기준으로 풀어야 한다는 것을 알 수 있습니다! 싸이클이 생긴다면 이를 끊어줘야하기 때문이죠! 우선, 이 문제의 특징은, 노드 하나에 간선 하나가 꼭 있다는 것이죠! 따라서, 만들어야 하는 그래프의 모습은 항상 이런 모습입니다. 이 모습 만이 바로 모든 섬이 통신을 할 수 있는 상태이죠! 가장 큰 특징은, 모든 노드들이 딱 하나의 in-degree를 가진다는 것이죠!그렇다면, 일단 정답을 위한 가장 큰 솔루션을 얻을수 있습니다. in-degree가 1보다 크..
[SW Expert Academy] 4335. 무인도 탈출 4335. [연습문제] 무인도 탈출 SW Expert Academy의 문제들은 저작권 때문에 무단 복제가 금지되어있기 때문에 링크로 대체하겠습니다.클릭시 이동합니다! 어떻게 풀까? 우선 직육면체의 특징에 대해서 살펴봅시다! 직육면체는 말 그대로 6개의 면을 가지고 있습니다.하지만, 생각해보면 그 특징은 가로, 세로, 높이의 세 가지 길이로 이루어져있죠! 즉, {가로, 세로}, {세로, 높이}, {높이, 가로}의 세 가지 방향으로 놓을 수 있다는 것을 알 수 있습니다!! 또한, 블록의 특성상 메모이제이션을 쓰면 굉장히 적절할 것 같다는 생각을 해볼 수 있습니다.20개의 블록이니까 비트로 나타내서 비트를 이용한 메모이제이션을 사용하면 될 것입니다! 어떤 비트가 주어지면, 값이 0 으로 세팅되어있는 블록들을 ..
[BOJ] 3649 로봇 프로젝트 로봇 프로젝트클릭시 이동합니다. 어떻게 풀까? 정렬 문제라고는 되있지만, 저는 다르게 풀었습니다. 왜냐하면! 답이 10^8을 넘지 않기 때문에, bool 배열을 충분히 만들 수 있기 때문이죠! 구멍의 크기는 입니다.nm = 즉, nm = 이라는 것이죠! 구멍을 막기 위해서 필요한 두 블록 중 하나가 l이라고 한다면, 필요한 나머지 하나의 블록은 x - l 일 것입니다!따라서, 입력을 받을 때 x-l의 블럭이 존재한다면, 구멍을 막을 수 있다는 것이겠죠! 하지만, 문제에 또 다른 조건이 있습니다. 바로 절대값이 가장 큰 수를 출력해야 한다는 것이죠! 절대값이 크기 위해서는 두 수의 차이가 가장 커야하고, 작은 수를 기준으로 보면, 가장 작은 길이 l과, x - l 의 값이 정답으로 출력하면 됩니다. l을 ..

반응형