#include <iostream>
using namespace std;
int main() {
int inp;
string word;
int count = 0;
cin >> inp;
for (int i = 0; i < inp; i++) {
cin >> word;
bool abc[26] = { false, };
abc[(int)(word[0]) - 97] = true;
for (int i = 1; i < word.size(); i++) {
if (word[i] == word[i - 1]) {
continue;
}
else if (word[i] != word[i - 1] && abc[(int)(word[i]) - 97] == true) {
count++;
break;
}
else {
abc[(int)(word[i]) - 97] = true;
}
}
}
cout << inp - count;
return 0;
}
단어 입력받기(string형태)
알파벳의 존재유무를 판단할 bool형 배열 abc 생성 후, false로 설정
첫번째 있는 알파벳(체커를 판단할 필요 x)을 abc에 true로 저장
(소문자 a의 아스키코드는 97부터 시작하므로 -97을 해주면 0~26까지 a~z로 가정하여 저장할 수 있음)
반복문
현재 알파벳과 앞전에 알파벳이 같은지 검사하고 같으면 다음으로 넘어간다.
같지 않다면 현재 알파벳이 이전에 등장했던 알파벳인지를 검사해보고
아니라면 현재 단어를 true로 바꾸어 앞으로 '이전에 등장했던 알파벳인지'를 검사하는 데 사용
맞다면 그룹단어가 아닌 것으로 체크하고 반복문을 종료
전체 입력한 단어 수에서 그룹단어가 아닌 수를 빼서 결과 출력
아스키코드 참고:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char n[11];
cin >> n;
for (int j = 0; j < strlen(n); j++) {
for (int i = 0; i < strlen(n); i++) {
int z;
if (n[j] > n[i]) {
z = n[i];
n[i] = n[j];
n[j] = z;
}
}
}
cout << n;
return 0;
}
버블정렬(bubble sort): 두 원소를 검사하여 크기가 순서대로 되어 있지 않으면 서로 교환, 과정을 반복하여 모든 원소가 알맞은 순서를 찾을 수 있도록 함.(교환할 때에는 새로운 변수를 하나 설정하여 활용함)
숫자를 문자열 배열로 입력받아서 저장
반복(0부터 입력받은 n의 길이보다 작을때까지만 반복)
버블정렬을 활용하여 문자 정렬
출력
#include <iostream>
#include <algorithm>
using namespace std;
int main(void) {
string str;
cin>>str;
sort(str.begin(), str.end(), greater<char>());
cout<<str;
}
sort(start,end,정렬방식): 정렬해주는 함수(기본적으로 오름차순 정렬)
greater() : 내림차순으로 정렬
문자를 입력받아서 sort함수로 입력받은 문자의 처음부터 끝까지 내림차순으로 정렬 후 출력
1475 방 번호
#include <iostream>
using namespace std;
int main(void) {
int n, num[10] = {}, maxx = -1, suin = 0;
scanf("%d", &n);
while (n >= 10) {
num[n % 10]++;
n /= 10;
}
num[n]++;
for (int i = 0; i <10; i++) { //>
if (i == 6 || i == 9)
suin += num[i];
else
maxx = max(maxx, num[i]);
}
maxx = max(maxx, (suin + 1) / 2);
printf("%d", maxx);
}
max(a,b): 두개의 값을 비교하여 최댓값을 반환
숫자를 입력받고, 1의자리숫자부터 차례로 숫자를 판단
숫자를 미리 만들어둔 10개의 배열에 알맞은 위치에 저장,
입력받은 숫자를 10으로 나눈 몫을 다시 저장(한칸씩 왼쪽으로 옮겨서 숫자를 판별?)
->반복(나눈 몫이 일의자리 숫자가 될 때까지)
남은 1의자리 숫자도 배열에 저장
num의 최댓값을 0~10까지 하나씩 검사해서 판별 (6과 9의 값은 따로 저장)
마지막으로 0~10(6,9제외)의 최댓값과 6의값, 9의 값+1을 해주고 2로 나눈 나머지를 비교하고 최댓값을 저장
출력
==> 겁나 맘에 안드는~ 풀이~ 말을 되게 못하는 편입니다.. 양해를 구합니다.
오늘의 tmi: 거리두기가 풀렸다,,, 나는 자발적 거리두기를 당하고 있는데,, 넘무넘무 나가놀고 싚다,,but have a no friend.
그리고 나는 내가 약간 위장용 씝덕,, 패션 씝덕이라고 생각했는데 의외로 좀,, 진짜인 것 같다. 주변에 진짜들만 있어서 내가 진짜인 줄 몰랐다. 충격적이다,,