
25/03/31
개발자 취업 준비를 위해 99클럽 코테스터디를 시작했습니다.
앞으로 꾸준히 공부할 저를 응원하고 기대하며 TIL을 작성해보려 합니다.
함께 스터디를 하는 여러분을 응원하며 의미있는 4주를 보내봐요!!
문제 : 백준 1032 (https://www.acmicpc.net/problem/1032)
분류 : 문자열
n개의 파일 이름을 입력받아 1)모두 동일한 문자는 그대로 출력 2)다른 문자는 '?'로 출력하여 파일 이름의 패턴을 분석.
1) 문자열 처리를 위해 string 헤더 사용
2) 중첩 for문을 이용해 string arr에 입력된 파일 이름을 자리별로 비교하여 출력 string에 추가함.
2-1) [0]->[len]까지 반복하며(첫번째 for문)
2-2) 각 파일이름을 직전 파일이름과 비교 (두번째 for문)
2-3)
문제(직전 파일 이름과 다른 경우) 검출 -> answer += '?'
문제 없음 -> 해당 문자를 answer에 추가
#include <iostream>
#include <string>
using namespace std;
int main() {
int n, len;
string file_name[51];
cin >> n;
for (int i =0; i <n; i++) {
cin >> file_name[i];
}
len = file_name[0].length();
if(n == 1) {
cout << file_name[0];
return 0;
}
string answer;
for(int i=0;i<len;i++) {
for(int j=1;j<n;j++) {
if(file_name[j-1].at(i) == file_name[j].at(i)) {
if (j == n-1)
answer += file_name[j].at(i);
}
else {
answer +='?';
break;
}
}
}
cout << answer << endl;
return 0;
}
오랜만에 문제를 풀려고 하니 손도 굳고 어리도 굳어서... 시간이 오래걸렸다.
혼자서 문제를 풀때는 타임어택의 부담이 크지 않았는데 99클럽으로 문제를 풀면서 타임어택의 부담감으로 최종 코드가 난잡해졌다.
아직 라이브러리 활용이나 기본적인 알고리즘 지식이 부족하지만 부족해서 스터디를 하는거니 열심히 해보겠습니다.
** 다른 분들의 TIL을 보니 더 많은 분석과 회고를 작성하셨네요... 앞으로의 과정에서 발전하는 모습을 보이겠습니다.