본문 바로가기

728x90

문자열

[백준알고리즘] 1802번: 종이 접기 -C++ [백준알고리즘] 1802번: 종이 접기 -C++ 1802번: 종이 접기 (acmicpc.net) 1802번: 종이 접기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 1000보다 작거나 같은 자연수이다. 둘째 줄부터 T개의 줄에 각각의 종이가 어떻게 접혀있는지가 주어진다. 종이의 정보는 문자열로 주어지며, 1 www.acmicpc.net 문제만 읽었을 때는 되게 어려운 문제라고 생각했다. 문제를 푸는 방법을 찾았을 때도 시간 초과가 괜찮을지 걱정했었는데 여유로운 시간이었다. 정답 비율만 보고 살짝 어려운 문제인가 싶었는데 실버 문제는 실버 문제였다. 분할 정복으로 분류되어 있는데, 분할 정복인가.. 싶긴 하다. 문제 풀이 문제의 내용은 사실 대부분이 불필요한데 괜히 길다. 아무튼 원룡이가 막 접었.. 더보기
[백준알고리즘] 1039번: 교환 -C++ [백준알고리즘] 1039번: 교환 -C++ 1039번: 교환 (acmicpc.net) 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 굉장히 어려웠다. 풀고 제출을 했었는데 틀렸다고 나왔고 해당 문제가 뭔지 알았는데, 고치지 못했다. 결국 다른 분의 블로그를 참고해서 문제를 푸는 법을 알았고, 이해한 내용을 바탕으로 다른 내용으로 풀고 싶었다. 아래 블로그의 얍문님의 포스팅을 보고 BFS로 푸는 방법에 대해서 알게 됐다. [ 백준 1039 ] 교환 (C++) :: 얍문's Coding World.. (tistory.com) [ 백준 1039 ] 교환 (C++) 백준의 교환(103.. 더보기
[백준알고리즘] 1032번: 명령 프롬프트 -C++ [백준알고리즘] 1032번: 명령 프롬프트 -C++ 1032번: 명령 프롬프트 (acmicpc.net) 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 문자열 정규 표현식과 관련된 문제다. 실제로 문제에서 주어진 것처럼 '?'는 정규식에서 '임의의 한 글자'를 의미한다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 입력이 들어오는 여러 문자열을 받은 뒤, 첫 문장을 기준으로 비교를 했다. 각 위치마다 모든 문자열에 같은 문자(\(character\))가 들어간다면 해당 문자를 추가해주었고, 그렇지.. 더보기
[백준알고리즘] 1013번: Contact -C++ [백준알고리즘] 1013번: Contact -C++ 1013번: Contact (acmicpc.net) 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 비트열처럼 생긴 문자열에 대한 정규식을 처리하는 문제다. 실제 조건인 (100+1+ | 01)+는 정규 표현식으로도 맞는 조건이니까.. 처음에 노가다로 풀었는데, 풀고 C++에서 정규 표현식이 가능한지 찾아보니까 있었다. 두 코드를 모두 첨부했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 직접 확인 먼저 해당 정규식을 일일이 확인했다. 정.. 더보기
[백준알고리즘] 10757번: 큰 수 A+B -C++ [백준알고리즘] 10757번: 큰 수 A+B -C++ 10757번: 큰 수 A+B (acmicpc.net) 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 이번 문제는 숫자를 읽을 수 없는 범위에서 연산까지 하는 문제다. 예전에 파이썬으로 소수점 아래를 연산할 때 경험해본 적 있는 타입의 문제였다.. 그때는 문제를 결국 풀었는지 어쨌는지 기억이 나지는 않지만.. 그때의 기억 덕분에 문제를 쉽게 풀었다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 사실 이렇게 큰 숫자를 int, double과 같은 type으로 입력받을 수는 없다. 또는 연산을 통해서 나온 값을 저장할 수도 없다. 한 가지 입력받을 수 있는 경우는.. 더보기
[백준알고리즘] 2941번: 크로아티아 알파벳 -C++ [백준알고리즘] 2941번: 크로아티아 알파벳 -C++ 2941번: 크로아티아 알파벳 (acmicpc.net) 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 크로아티아 알파벳과 변경된 문자를 맵핑하는 개념이 필요했다. set을 만들고, 변경 후의 문자들을 넣어주었다. 이때 "dz="의 경우만 길이가 3이고 나머지는 2이기 때문에 "dz="를 제외한 것들을 넣어주었다. 이후 하나씩 인덱싱하면서 앞 글자와 현재 글자를 한 쌍으로 만들어 길이가 2인 substr을 만들었다. .. 더보기
[백준알고리즘] 2908번: 상수 -C++ [백준알고리즘] 2908번: 상수 -C++ 2908번: 상수 (acmicpc.net) 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 풀이 방법이야 여러 가지 있는 것 같다. 모든 숫자는 0이 없이 세 자리 숫자라는 조건 덕분에 각 자리의 숫자를 모두 찾아서 뒤집힌 숫자를 일일이 구할 수도 있다. 나는 여기서 string으로 입력받고 reverse하기로 결정했다. reverse()의 경우 헤더에 존재하며 뒤집을 주소의 iterator type의 first와 last를 인자로 받는다. 따라서 begin()과 end()를 사.. 더보기
[백준알고리즘] 1152번: 단어의 개수 -C++ [백준알고리즘] 1152번: 단어의 개수 -C++ 1152번: 단어의 개수 (acmicpc.net) 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 심오한 c++의 세계.. string type을 parsing 해주기 위해서 헤더에 있는 stringstream 을 사용했다. 추가로 istringstream, ostringstream이 있는데 각각 입력 형식과 출력 형식을 정해주는 용도 정도로 사용하는 것 같다. stringstream의 경우에는 stream 타입이기 때문에 헤더에 정의된 getline 함수.. 더보기

728x90