문자열 35

[백준 18698] The Walking Adam [Python]

풀이 Adam의 행동에 대한 정보가 입력으로 주어진다. 걷기에 성공할 때마다 손을 드는데, 넘어지기 전에 얼마나 많이 걸었는지 세주면 된다. 'D' 가 최초로 나오기 전까지 'U'의 개수를 세주자. 소스코드 소스코드 보기 출처 18698번: The Walking Adam Adam has just started learning how to walk (with some help from his brother Omar), and he falls down a lot. In order to balance himself, he raises his hands up in the air (that’s a true story), and once he puts his hands down, he falls. You are g..

[백준18198] Basketball One-on-One [Python]

풀이 Alice 와 Barbara가 번걸아가면서 진행한 농구게임에 대한 정보가 주어진다. 중간에 게임이 끝나는 경우는 없기 때문에, 양쪽의 점수를 모두 다 더해준 후 최종점수를 기준으로 누가 이겼는지 출력해주면 된다. 소스코드 소스코드 보기 출처 18198번: Basketball One-on-One The input consists of a single line with no more than 200 characters: the record of one game. The record consists of single letters (either A or B) alternating with single numbers (either 1 or 2), and includes no spaces or other e..

[백준 17863] FYI [Python]

풀이 입력받은 전화번호의 prefix number가 555이면 "YES"를, 아니면 "NO"를 출력하면 되는 문제이다. 소스코드 소스코드 보기 출처 17863번: FYI In the United States of America, telephone numbers within an area code consist of 7 digits: the prefix number is the first 3 digits and the line number is the last 4 digits. Traditionally, the 555 prefix number has been used to provide directory informatio www.acmicpc.net

[백준 5525] IOIOI [Python]

풀이 입력으로 주어진 문자열 S 안에 2N + 1길이의 Pn이 겹침을 허용해서 몇 개 존재하는지 찾으면 되는 문제다. 최대 길이 M에 대한 Pn의 길이는 (100만 - 1) 이기 때문에, 아래처럼 모든 구간에서의 Pn을 구하면 시간초과가 발생한다. N = 2, M = 15, S = IOIOIOIOIOIOIOI 일 때, IOIOI IOIOI IOIOI ... 처럼 매번 2N + 1 길이만큼의 문자열이 주어진 문제의 조건을 만족시키는지 확인하면 시간초과가 발생할 것이다. 때문에, 이미 조건을 만족시키는 문자열을 다시 확인하지 않고 풀이하는 방법이 필요하다. 먼저, 올바른 Pn이 만들어지는 조건을 살펴보자 Pn은 'I' 부터 시작한다. 문자열 S의 M - 1 번째가 'I' 아니면, Pn은 만들어지지 않는다. ..

[백준 27880] Gahui and Soongsil University station [Python]

풀이 가희가 승강장 까지 내려가기 위한 수단(path)과 높이(height)를 제한에서 주어진 단위로 변환하여서 계산하면 된다. 계단이면 17cm, 에스컬레이터면 21cm이다. 주어진 모든 입력에 대해 단위를 곱하고, 총합을 출력하면 된다. 소스코드 소스코드 보기 출처 27880번: Gahui and Soongsil University station Soongsil University Station is famous as the deepest station on Seoul Subway Line 7. This station is so deep that the platform is on the B6. Gahui was surprised that she did not reach the platform afte..

[백준 9935] 문자열 폭발 [C]

풀이 문자열의 길이가 폭발 문자열의 길이보다 크거나 같을 때, 폭발 문자열을 포함하고 있으면, 폭발 문자열의 길이만큼 index를 감소시키는 방식으로 출력할 문자열을 만들어주었다. 최종적인 index만큼 출력을 해줘도 되고, 마지막에 '\0'을 삽입해 문자열의 끝을 알려줘도 된다. 소스코드 #include #include char str[1000001], ans[1000001], explosion[37]; int main(){ scanf("%s %s", str, explosion); int len = strlen(str), exp_len = strlen(explosion), idx = 0; for (int i = 0; i = e..

[백준 5430] AC [C]

풀이 입력부터 애먹은 문제다. "[ , , ]"를 문자열로 입력받아서 해결해도 되지만, 정수만 입력받기 위해 ' [ ', ' ] '가 입력될 때는 getchar()로 buffer를 비워 다음 입력에 영향이 안가도록 했다. getchar(); for (int i = 0; i < n; i++) scanf("%d,", &x[i]); getchar(); error가 뜨는 경우는 다음과 같다. n = 0일 때 n = 0이 아니지만, p에 입력받은 D의 개수보다 n이 작을 때 2번째 조건을 확인하기 위해 n을 감소시켜 반복문이 끝나기 전에 1번째 조건으로 유도하는 방법으로 구현했다. for (int i = 0; p[i] != '\0'; i++){ if (p[i] == 'R') reverse = reverse ? 0..

[백준 1764] 듣보잡 [C/C++]

풀이 알고리즘은 엄청 간단하다. N명의 이름을 입력받아서 정렬 후, M명의 이름을 입력받아 이진탐색으로 찾은 명단과 총 인원을 출력하면 된다. 하지만, 이를 C로 구현하는 것은 끔찍하다... 소스코드 #include #include #include #include using namespace std; int main(){ int N, M, i; scanf("%d %d", &N, &M); vector v1(N), v2; char name[21]; for (i = 0; i < N; i++){ scanf("%s", name); v1[i] = name; } sort(v1.begin(), v1.end()); for (i = 0; i < M; i++) { scanf("%s", name); if (binary_sea..

[백준 1541] 잃어버린 괄호 [C]

풀이 숫자가 아닐 때까지 숫자로 변환해 temp에 저장하다가 부호를 만나면 sum에 저장했다. 처음에 숫자가 입력되므로 양수이기 때문에 '-'일 때, sub[0]에 저장을 해주고 sub[1] 이후로는 빼줄 수를 저장했다. 소스코드 #include #include #include int main() { char str[51]; scanf("%s", str); int len = strlen(str), sub[25] = {0,}, cnt = 0, sum = 0, temp = 0; for (int i = 0; i