분류 전체보기 51

[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

[프로그래머스 Level 1] 숫자 문자열과 영단어 (C++)

문제 링크 (https://programmers.co.kr/learn/courses/30/lessons/81301) 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 인자로 받은 문자열에 존재하는 영단어를 대응되는 숫자로 바꾸어 원래 숫자를 완성해주면 된다. 인자로 받은 문자열을 한 글자씩 반복하며 isdigit 함수를 통해 숫자인지 아닌지 확인한다. 숫자가 아니면(문자면) while문을 통해 zero ~ nine 중 하나의 단어가 될 때까지 임시 문자열(tmp)에 문자를 이어 붙인다. 문자열이 완성..

[프로그래머스 Level 1] 신규 아이디 추천 (C++)

문제 링크 (https://programmers.co.kr/learn/courses/30/lessons/72410) 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 7단계의 처리 과정을 통해 규칙에 맞지 않은 닉네임이라면 규칙에 맞는 새로운 닉네임을 추천해주어야 하는 문제이다. 1단계: new_id의 모든 대문자를 대응되는 소문자로 치환합니다. - isupper, tolower 함수를 통해 대문자를 소문자로 치환한다. 2단계: new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)..

[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

[BOJ] 1713번 후보 추천하기 (C++)

문제 링크 (https://www.acmicpc.net/problem/1713) 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 추천받은 학생의 사진을 사진틀에 게시하고 추천받은 횟수를 표시해야한다. 입력 : 사진틀의 개수와 전체 학생의 추천 결과(추천받은 순서대로) 출력 : 최종 후보 map을 사용하여 해결한 문제! map m; (추천 받은 학생, (추천 수, 들어온 시기)) - 비어있는 사진틀이 있다면? insert 함수 실행 -> 해당 학생이 이미 사진틀에 존재한다면 해당 학생의 추천 수 증가 ..

ALGORITHM/BOJ 2021.09.03

[BOJ] 3452번 고스택 (C++)

문제 링크 (https://www.acmicpc.net/problem/3425) 알고리즘 특강에서 풀었던 문제! 예외처리할 점이 엄청 많은 문제다 내 경우엔 DIV 때문에 무한틀렸습니다가 떴다🤯 아래 목록은 특강 때 강사님이 해주신 말씀들 !!! - 입력 처리 - 명령어가 문자로 들어오니까 명령어에 따라서 분기 - NUM의 경우는 뒤에 숫자가 들어옴 - 스택의 구현 - vector - 명령어를 구현하는 부분 - 예외처리 1. 0으로 나누었을 때 2. 연산 결과 절대값이 10^9를 넘었을 때 3. 변수 타입 long long (특히 곱하기) 4. 스택에 값이 없을 때 etc ... - 초기화 + 각각의 연산을 수행하는 로직 - END가 들어오면 프로그램 종료 (하나의 기계 종료) - 주의할 점 1. 예외처..

ALGORITHM/BOJ 2021.09.03