알고리즘

    BOJ(17070) - 파이프 옮기기 1 (C++)

    BOJ(17070) - 파이프 옮기기 1 (C++)

    링크 : https://www.acmicpc.net/problem/17070문제 설명NxN 크기의 방이 1x1크기의 정사각형 칸으로 나누어져 있습니다.오늘은 집 수리를 위해 파이프를 옮기려고 합니다. 파이프는 아래와 같은 형태이고 2개의 연속된 칸을 차지하는 크기입니다.파이프는 가로, 세로, 대각선 방향으로 회전시킬 수 있습니다.파이프는 매우 무겁기 때문에 파이프를 밀면서 이동시키려고 합니다. 이 때 파이프를 밀면서 회전시킬 수 있습니다.파이프는 →, ↘, ↓ 방향으로만 밀 수 있습니다. 이때, 파이프가 가로로 놓여져 있는 경우 →, ↘ 방향으로만, 세로로 놓여져있는 경우 ↘, ↓ 방향만, 대각선 방향인 경우 3방향으로 이동시킬 수 있습니다.파이프를 밀거나 혹은 밀면서 회전시킬 때 색이 칠해져 있는 칸은..

    BOJ 문제집 (1766) C++

    링크 : https://www.acmicpc.net/problem/1766문제 설명1~N번까지 총 N개의 문제로 된 문제집이 있습니다. 각 문제의 난이도는 번호와 동일합니다.어떤 문제를 풀 까 고민하던 중 '먼저 푸는 것이 좋은 문제'가 있다는 것을 깨달았습니다. 그래서 다음 3가지 조건에 따라 문제를 풀 순서를 정하기로 했습니다.1. N개의 문제를 모두 풀어야 합니다.2. 먼저 푸는 것이 좋은 문제가 있는 문제는, 반드시 먼저 푸는 것이 좋은 문제를 다 푼 후 풀어야합니다.3. 가능하면 쉬운 문제부터 풀어야 합니다.문제의 개수와 먼저 푸는 것이 좋은 문제에 정보가 주어질 때, 주어진 조건을 만족하며 문제 풀이 순서를 결정해주는 프로그램을 작성하시오. (항상 문제를 모두 풀 수 있는 경우만 입력으로 주어..

    BOJ(16936) - 나3곱2

    링크 : https://www.acmicpc.net/problem/16936문제 설명나3곱2 게임은 정수 x를 가지고 다음과 같은 룰을 바탕으로 하는 게임입니다.나3 : x를 3으로 나눕니다. 단, x는 3으로 나누어 떨어져야 합니다.곱2 : x에 2를 곱합니다.나3곱2를 진행하면서, 만든 수를 모두 기록하면 수열 A를 만들 수 있습니다. 예를 들어, x = 9, N = 6이고, 적용한 연산이 곱2, 곱2, 나3, 곱2, 나3인 경우에 A = [9, 18, 36, 12, 24, 8] 입니다.수열 A의 순서를 섞은 수열 B가 주어졌을 때, 수열 A를 구하시오. 이때 항상 정답이 존재하는 경우에만 입력이 주어지며, 가능한 정답이 여러가지인 경우에는 아무거나 출력하시오.제한조건수열의 크기 N (2≤N ≤100..

    백준(5430) - AC

    링크 : https://www.acmicpc.net/problem/5430문제 설명아래 2가지 명령을 바탕으로한 명령조합과 자연수로 이루어진 배열이 주어질 때, 명령을 모두 수행한 후 배열의 최종 결과를 구하는 프로그램을 작성하세요. 단, 명령 수행 중 더 이상 배열에 수가 없을 시 error를  출력하세요.R : 배열에 있는 수의 순서를 뒤집습니다. (ex : [1,2,3,4] → [4,3,2,1])D : 첫 번째 수를 버립니다. (ex: [1,2,3,4] → [2,3,4])아이디어R 명령처럼 실제로 배열을 계속 뒤집기는 힘들어 방향을 가르키는 변수만 가지고 방향을 체크하면 좋을 것 같습니다.D 명령을 위해 앞과 뒤에 자료를 쉽게 제거할 수 있는 자료구조인 double ended queue면 좋을 것 ..

    백준(15922) - 아우으 우아으이야!!

    백준(15922) - 아우으 우아으이야!!

    링크 : https://www.acmicpc.net/problem/15922문제 설명수직선상에 선분(x1~x2)을 순차적으로 최대 10만개 까지 입력해줍니다.이 때 입력되는 데이터는 좌표가 x가 증가하는 순으로, x가 같다면 y가 증가하는 순으로 주어집니다.N개의 선분을 모두 그렸을 때, 수직선 위에 그어진 선분의 길이의 총합을 구하시오.아이디어● 선분은 모두 정렬된 상태로 주어져, 다음 선분이 겹치는지 안겹치는지 계속 확인하며 나아가면 선분을 겹쳐서 연결되는 긴 선분 하나로 취급할 수 있을 것 같습니다.코드#include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int N; ci..

    프로그래머스 - 기지국 설치

    링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12979# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명4G 기지국을 5G 기지국으로 모두 바꿀 예정입니다. 하지만 5G 기지국이 4G 기지국보다 전달 범위가 좁아, 어떤 아파트에는 전파가 도달하지 않는 문제가 생겼습니다.쭉 늘어서있는 아파트 개수 n개와 기존 4G 기지국 위치가 담겨있는 배열 stations, 5G 기지국의 전파 전달 범위 w가 주어질 때, 모든 아파트에 전파를 전달하기 위한 최소 추가 5G 기지국 개수를 구하시오.N ..

    프로그래머스 - 파일명 정리

    링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17686# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명파일명이 담긴 배열 files를 아래 조건을 토대로 정렬시켜주십시오.1. 파일명을 HEAD, NUMBER, TAIL 3 부분으로 나눕니다.HEAD는 첫 파일명부터 숫자가 아닌 부분까지의 문자열입니다. 최소 1글자 이상입니다.NUMBER는 HEAD 이후부터 연속된 숫자로 이루어진 부분입니다. 최소 1글자, 최대 5글자 이내입니다.TAIL은 HEAD와 NUMBER을 제외한 나머지 부분으..

    프로그래머스 - 방문길이

    링크 : https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명11x11 크기의 맵이 있고 언제나 중앙에서 시작합니다. 아래와 같은 4가지 명령어가 있고, 좌표평면의 경계를 넘어가는 명령을 무시할 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하세요.U : 위로 1칸 가기, D : 아래로 1칸 가기, 'L' : 왼쪽으로 1칸 가기, 'R' 오른쪽으로 1칸 가기아이디어11x11 배열에 들어오는 방향을 상하좌우를 둬서 특정 지점에 어느 방향으로 들어..