본문 바로가기

문제풀이

(9)
[ 백준 14888 ] 연산자 끼워넣기 C++ DFS 풀이 # 문제링크 www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 이것도 삼성 기출이라는데 실버등급이다. 난이도가 복불복인가.. 암튼 숫자 위치는 바뀌지 않고, 연산자 위치만 바뀐다. 연산자의 개수가 최대 10개라서 그냥 모든 경우의 수를 계산해보면 된다. DFS로 구현했다. 문제 예시에서 경우의 수 60가지라고 했는데, 심심해서 한 번 모든 경우의 수를 출력해보았다. 제출 코드는 맨 아래에 있다. # 1 +..
[백준 12100] 2048 (Easy) C++ # 문제링크 www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 잘 푼 것 같은데 채점에서 광탈하길래 우울했던 문제.. 원인은 freopen() 을 지워주지 않아서였다 ㅠㅠㅠㅠㅠㅠ 그것도 모르고 왜 틀렸는지 몇 시간 더 뜯어보면서 스트레스 받았다.. 문제를 처음 읽고, "최대 5번" 이동시켜서 얻을 수 있는 가장 큰 수를 구하는 것이기 때문에, 모든 경우의 수를 다 구해봐도 괜찮겠다고 생각했다. (배열의 크기도 20*20 밖에 되지 ..
[백준 3190] 뱀 C++ # 문제링크 www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net C++의 deque 를 사용해서 풀었다. 앞으로 갈 때는 push_front() 해주고, 사과가 없을 때는 pop_back() 해주었다. 방향은 이차원 배열을 만들어서 해결했다. dir[i][k] 배열은 현재 i 방향일 때 k (왼쪽이나 오른쪽)으로 움직이는 방향이다. 잘 하시는 분들은 뭔가 방향 이동에서도 규칙성을 찾으시겠지만, 나는 그냥 배열로 다 써주었다.. 앞으로 갈 때마다 벽이랑 부딪혔는지, 자기..
[정올 2604] 그릇 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1865&sca=2050 JUNGOL www.jungol.co.kr Beginner_Coder 에 문자열 문제이다. 맨 처음에는 높이 10을 주고, 다음 글자부터는 이전거랑 비교해서 같으면 5더하기, 다르면 10 더하기를 해주었다. # 제출 코드 #include using namespace std; int main() { string s; cin >> s; int ans = 10; for (int i = 1; i < s.length(); i++) { if (s[i] == s[i - 1]) ans += 5; else ans += 10; } cout
[정올 2514] 문자열 찾기 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1775&sca=2050 JUNGOL www.jungol.co.kr 주어진 문자열에서 연속 3개의 문자가 IOI 이거나 KOI인 문자열이 각각 몇 개 있는지 찾는 프로그램을 작성하라. 문자열은 알파벳의 대문자로만 이루어진다. 예를 들어 "KOIOIOI"라는 문자열은 KOI 1개 , IOI 2개가 포함되어있다. -> string 으로 받아서, 0번째 글자부터 s.length() - 2 까지 돌면서 KOI 와 IOI를 찾았습니다. # 제출 코드 #include using namespace std; int main() { string s; cin >> s; int K = 0, I = 0; for (int i = ..
[정올 1516] 단어 세기 # 문제링크 jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=788&sca=2050 JUNGOL www.jungol.co.kr Beginner_Coder 에 문자열 종류 문제다. 문장을 입력받아서 문장에 나온 단어 갯수를 출력하는 문제. C언어 할 때와 달리 C++에는 string 형이 있어서 좀 더 편하게 구현할 수 있었던 거 같다. 문장을 단어로 나눌 때에는 strtok 을 사용했는데, 이거 사용법 좀 외워야겠다. Beginner_Coder 문제인데 삽질 좀 했다 .. - main : 한 줄로 입력받기 cin.getline(buffer, maxsize), END 읽으면 종료- count_word : 문장을 단어로 나눠서 단어 수 세기- find_word : 이미 ..
[백준 10825] 국영수 정렬문제 # 문제링크 www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net STL의 sort 에 compare 함수로 구현했습니다. # 제출 코드 #include #include #include #include using namespace std; struct Student { string name; int kor; int eng; int math; }; bool compare(const Student&a, const Student&b) { if (a..
[백준 7576] 토마토 # 문제 링크 www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 쉽게 생각했다가 엄청 고생한 문제다. 1로 표시된 익은 토마토부터 최단거리 구하는거니까 BFS 로 구하면 되겠네~ 했다. 그래서 배열을 입력 받은 후 for 문 돌려가며 1을 찾아서 DFS를 돌렸고, 가장 작은 수로 배열을 채웠다. 테스트 케이스를 돌렸을 때는 다 맞았는데, 제출을 하면 계속 틀렸다고 나왔다. 뭐가 틀린지도 모르고 계속 싸매다가 결국 구글링을 했다. 바로 속이 싸악..