백준 11091 (c++) 알파벳 전부 쓰기
PS/BOJ 2022. 1. 18. 23:08

https://www.acmicpc.net/problem/11091 11091번: 알파벳 전부 쓰기 팬그램은 26개의 알파벳, a~z를 최소 한번씩 모두 사용한 문장을 말한다. 아마 가장 유명한 문장은 이것일 것이다. "The quick brown fox jumps over the lazy dog." 꿍은 다른 문장들중에 팬그램인 것은 없는지 www.acmicpc.net 문제의 태그(분류)는 구현+문자열이다. 이런 문제가 처음 써보는 언어를 맛보기도 좋고 구현 능력에도 도움이 되겠지만 풀 때의 컨디션에 따라 즐겁기도, 지루하기도 한 것 같다. getline으로 s를 입력받고, 해당 문자가 존재함을 alphabet이라는 bool형 배열에 체크했다. 이후 alphabet이 false, 즉 해당 인덱스의 알파..

[삼성 SW 역량 기출] 백준 14499 (C++) 주사위 굴리기
PS/삼성 SW 역량 테스트 기출 2021. 12. 26. 20:55

아이디어 명령어 입력 전후를 구분하여 주사위에 새겨질 값을 바꿔야하기 때문에 dice[]배열과 new_dice[]배열 두개를 선언한다. 입력된 명령어가 1,2,3,4인 경우 각각 dice[] 및 지도 arr[x][y] 배열을 조건에 맞게 기록한다. 문제에 힌트가 주어졌다. 위 숫자들을 dice[] 및 new_dice[]의 index라고 생각하자. new_dice[]라는 지역 변수에 직전의 주사위 값인 dice[]의 값을 기록한다. 그리고 x또는 y의 값을 증감하여 다음에 탐색할 지도의 위치를 찾는다. 이때, 만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도 하면 안 된다. 라고 했으므로 매 명령어마다 실행하려는 x 또는 y의 증감이 지도의 범위를 벗어나는지 체크해야한다. new..

백준 2744 (C++) 대소문자 바꾸기
PS/BOJ 2021. 12. 23. 00:42

아이디어 아스키 코드 차트표를 참고하면 대문자와 소문자가 십진수로 32가 차이나는 것을 알 수 있다. 따라서 소문자 a를 기준으로(97) 대소문자를 구분해서 대문자라면 32를 더하여 char로 출력하고, 소문자라면 32을 뺀다. 코드 #include #include using namespace std; using ll = long long; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); string s; cin >> s; for (int i = 0; i < s.size(); i++) { if (s[i] < 97) { cout

백준 10845 (C++) 큐
PS/BOJ 2021. 11. 18. 12:35

기본적인 구현 문제였다. 이런 문제는 c++의 stl인 queue를 사용해도 되지만, 자료구조 학습 기간이 길지 않은 초보자라면 직접 구현해보길 권장한다. front 와 back을 증가시키기만 하는 linear queue를 구현해도 주어진 input이 배열의 범위를 넘어가지 않아서 circular queue가 필요하지 않은 것 같다. circular queue는 modulo를 사용하면 된다. https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmic..

백준 10409 (C++) 서버
PS/BOJ 2021. 11. 7. 13:51

https://www.acmicpc.net/problem/10409 10409번: 서버 당신은 FCFS(First-Come, First-Served)의 규칙에 따라 요청된 일을 처리하는 서버를 담당하게 되었다. 매일, 당신은 일을 처리하기 위해 최대 T분 동안 서버에 시간을 할당할 수 있다. 당신은 오늘 주어 www.acmicpc.net 여태 합한 시간(sum)과 이번에 입력받은 job의 시간의 합이 T를 넘어설 때, 이터레이션 i 를 출력하고 main을 종료한다. main을 종료하지않고 반복문을 빠져나왔다면, 모든 일이 시간 안에 끝난 것이므로 n을 출력한다. #include using namespace std; using ll = long long; const int MAX = 100001; int ..

백준 2935 (C++) 소음 (출력 초과, 틀렸습니다)
PS/BOJ 2021. 10. 20. 14:15

아이디어 풀면서 재밌었던 구현 문제다. 숫자가 최대 100자리까지 주어진다고 했으므로 우리가 알고 있는 일반적인 변수크기로는 택도 없다. 따라서 string으로 a, b 변수를 만들고 어떻게 연산할 것인지 고민해보자. 우선 곱셈은 간단하다. 곱셈은 자릿수끼리의 덧셈이므로 string a와 b의 size(또는 length)의 덧셈만큼 0을 출력하면 된다. 덧셈에서는 경우의 수가 세가지이다 1. a > b 2. a < b 3. a == b 1. 의 경우 a.size() - b.size() - 1만큼 자릿수(0)를 출력한다. 2. 의 경우도 1과 마찬가지이다. 3. 의 경우는 "2"를 출력하고 수의 자릿수 -1만큼 "0"을 출력하면 된다. 코드 #include #include #include #include ..