백준 42

[BOJ] 1920번 수 찾기 (C++)

문제 (https://www.acmicpc.net/problem/1920) 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이분 탐색이 잘 기억이 안 나서 전에 풀었던 문제들 글을 써보려 한다 🤦‍♀️ 이 문제는 간단한 이분 탐색 문제로 숫자들의 존재 여부를 1/0으로 출력해주면 된다. [소스코드] 더보기 2021-05-25 Silver 4 - 이분 탐색

ALGORITHM/BOJ 2021.12.16

[BOJ] 12904번 A와 B (C++)

문제 (https://www.acmicpc.net/problem/12904) 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 연산 1. 문자열의 뒤에 A를 추가한다. 연산 2. 문자열을 뒤집고 뒤에 B를 추가한다. 처음 시도 땐 S에서 두 가지 연산을 모두 진행시키며 T가 되는지 체크하는 방식으로 구현했는데 계속 메모리 초과가 발생했다. 구현 방식을 바꾸어서 T를 보고 연산을 거꾸로 진행시켜서 S가 되는지 체크했다. T의 가장 마지막 문자가 A일 때? 연산 1이 적용된 것이..

ALGORITHM/BOJ 2021.11.24

[BOJ] 2866번 문자열 잘라내기 (C++)

문제 (https://www.acmicpc.net/problem/2866) 2866번: 문자열 잘라내기 첫 번째 줄에는 테이블의 행의 개수와 열의 개수인 R과 C가 주어진다. (2 ≤ R, C ≤ 1000) 이후 R줄에 걸쳐서 C개의 알파벳 소문자가 주어진다. 가장 처음에 주어지는 테이블에는 열을 읽어서 문자 www.acmicpc.net 처음엔 시간 초과로 헤맸던 문제이다 ,, 문제에 "가장 처음에 주어지는 테이블에는 열을 읽어서 문자열을 만들 때, 동일한 문자열이 존재하지 않는 입력만 주어진다."도 못 읽어서 처음 주어졌을 때도 따로 체크하고 그랬다 허허 문제를 잘 읽자!!!! 0. 입력을 다 받은 후에, 마지막 행만 검사를 한다. 1. 마지막 행에서 중복되는 단어가 없으면 위에 어떤 단어가 붙어도 문..

ALGORITHM/BOJ 2021.11.18

[BOJ] 16234번 인구 이동 (C++)

문제 (https://www.acmicpc.net/problem/16234) 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net DFS로 해결한 문제! 처음엔 문제를 제대로 이해하지 못하고 너무 어렵게 접근해서 삽질했다 ㅠㅠㅠㅠ 하지만.. 정신 차리고 풀어보니 간단했다.....😑 예제가 5개 있는데 예제 4, 예제 5를 직접 구해보면 이해가 잘 된다! dfs를 진행하며 국경선이 열리는 곳의 좌표들을 v(vector)에 넣어준다. - v의 size가 1이면? 해당 좌표에서는 국경선이 열리는 곳이 없는 ..

ALGORITHM/BOJ 2021.11.18

[BOJ] 20055번 컨베이어 벨트 위의 로봇 (C++)

문제 링크 (https://www.acmicpc.net/problem/20055) 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 삼성 역량 기출문제에 있길래 알고리즘 스터디 문제로 픽한 문제...! 그냥,,,,, 구현했다 더 보기 좋고 간결한 코드도 있는지 한 번 찾아봐야겠다!! pair를 자료형으로 갖는 벡터에 (first: 내구도 second: 로봇 존재 여부(1: 존재, 0: 존재 X))를 담아서 구현했다. 진행 순서는 아래와 같다. 1. 벨트가 로봇과 함께 한 칸 회전: 로봇과 함..

ALGORITHM/BOJ 2021.10.22

[BOJ] 3055번 탈출 (C++)

문제 링크 (https://www.acmicpc.net/problem/3055) 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 여름방학 때 들었던 알고리즘 특강에서 푼 문제! 그땐 강사님이 바로 해답을 알려주셔서 풀었는데 혼자 풀었다면 매우 헤맸을 듯 ㅎㅎ... bfs로 해결하면 되는데 포인트는 고슴도치가 물이 찰 예정인 칸으로 이동할 수 없는 점이다. 현재 물이 차있는 칸도 아니고 물이 찰 예정인 칸을 어떻게 알지..? => 고슴도치보다 물을 먼저 이동시켜주면 된다! 입력받을 때 물의 좌표(여러 곳 가능), 고슴도치 ..

ALGORITHM/BOJ 2021.10.14

[BOJ] 10026번 적록색약 (C++)

문제 링크 (https://www.acmicpc.net/problem/10026) 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 간단한 dfs문제이다. R / G / B로 구분된 영역들이 총 몇 개인지 개수를 구하면 되는데, 적록색약인 사람이 봤을 때의 영역 개수도 구해주어야 한다. dfs 함수 내에서 방문했는지 여부를 visited로 체크해야 하는데 바보같이 arr로 체크해놓고 왜 이러지? 이러고 있었다 🙄 이런 바보 같은 실수 절대 하지 않기로 ,,,, [소스코드] 더보기 2021-10-14 Gol..

ALGORITHM/BOJ 2021.10.14

[BOJ] 14501번 퇴사 (C++)

문제 링크 (https://www.acmicpc.net/problem/14501) 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net dp와 브루트포스로 풀 수 있는 문제 !! 나는 dp로 풀었다. n일을 일하며 얻을 수 있는 최대 수익을 구해야 하는데 상담이 가능하다고 해서 바로 진행하는 것이 아니라 그 뒤에 더 좋은 수익이 나는 상담이 있을 수도 있으니 이 점을 체크해야 한다. 나는 2xn 크기의 배열을 사용했는데 0행의 각 열은 그 날까지 얻을 수 있는 최대 수익을, 1행의 각 열은 그날 상담을 시작한다면 며칠이 걸리는지 넣어주었다. 1. 해당 날짜에 시작하는 상담이 남은 기간 동안 가능한 상담인지 (ex) N = 7인 경우, 6일에 잡힌 상담이..

ALGORITHM/BOJ 2021.10.09

[BOJ] 14502번 연구소 (C++)

문제 링크 (https://www.acmicpc.net/problem/14502) 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 0: 빈칸 / 1: 벽 / 2: 바이러스 입력받은 직사각형 중에서 0인 부분은 바이러스가 퍼질 수 있는 지역이다. 바이러스가 최대한 퍼지지 않도록 벽을 세워야 하는데 세울 수 있는 벽의 개수는 무조건 3개이다. 벽을 세울 수 있는 곳들 중 3곳을 골라 벽을 세웠을 때 얻을 수 있는 안전 영역의 크기의 최댓값을 구하는 문제! 1. 바이러스(2) 좌표, 빈 칸(0) 좌표를 모두 vector에 기억해..

ALGORITHM/BOJ 2021.10.08

[BOJ] 14888번 연산자 끼워넣기 (C++)

문제 링크 (https://www.acmicpc.net/problem/14888) next_permutation을 사용하여 해결한 문제! N개의 수로 이루어진 수열을 num 벡터에 차례대로 넣어준다. 연산자의 개수만큼 연산자에 해당하는 숫자를 oper 벡터에 넣어주었다. 이 때, 연산자에 해당하는 숫자는 (1: 덧셈 / 2: 뺄셈 / 3: 곱셈 / 4: 나눗셈)이라고 지정했다. 예를 들어 연산자 입력이 2 1 1 1 이라면 => oper 벡터에는 1 1 2 3 4 가 들어가는 것! oper 벡터를 next_permutation 의 인자로 사용하여 순열을 구해준다. do문 안에서는 num 벡터의 크기만큼 반복문을 돌리며 각 연산자에 맞는 연산을 해준다. (1: 덧셈 / 2: 뺄셈 / 3: 곱셈 / 4: 나..

ALGORITHM/BOJ 2021.09.07