LIFO(Last in, First out)
FIFO(First in, First out)
딕셔너리는 ‘키’와 ‘값’로 이루어진다.
‘키’에 해당하는 ‘값’을 저장하고 읽어온다.
일반적인 의미에서 ‘해시 테이블’과 동일한 개념이라고도 볼 수 있다.
#include <stdio.h>
#include <string.h>
int main()
{
int len=0,cnt=0;;
char crocha[101];
scanf("%s",crocha);
len=strlen(crocha);
for (int i=0;i<len;i++){
if (crocha[i]=='c'&&crocha[i+1]=='='){
cnt++;
i+=1;
}
else if (crocha[i]=='c' && crocha[i+1]=='-'){
cnt++;
i+=1;
}
else if (crocha[i]=='d' && crocha[i+1]=='z'&&crocha[i+2]=='='){
cnt++;
i+=2;
}
else if (crocha[i]=='d' && crocha[i+1]=='-'){
cnt++;
i+=1;
}
else if (crocha[i]=='l' && crocha[i+1]=='j'){
cnt++;
i+=1;
}
else if (crocha[i]=='n' && crocha[i+1]=='j'){
cnt++;
i+=1;
}
else if (crocha[i]=='s' && crocha[i+1]=='='){
cnt++;
i+=1;
}
else if (crocha[i]=='z' && crocha[i+1]=='='){
cnt++;
i+=1;
}
else{
cnt++;
}
}
printf("%d",cnt);
}
#include <stdio.h>
#include <string.h>
int main()
{
int count=0,len,total=0;
char word[101];
scanf("%d",&count);
for (int i=0;i<count;i++){
int check[101]={0};
int conse=0;
scanf("%s",word);
len=strlen(word);
for (int j=0;j<len;j++){
if (check[word[j]-'a']==0){
check[word[j]-'a']=1;
}
else if (word[j]!=word[j-1]){
conse=1;
}
}
if(conse==0){
total++;
}
}
printf("%d",total);
}
실패작:
#include <stdio.h>
#include <string.h>
int main()
{
long long a=0,b=0,c=0,sell=0,s=0;
scanf("%lld %lld %lld",&a,&b,&c);
for (sell=0;sell<2100000001;sell++){
if (a+b*sell<c*sell){
printf("%lld\n",sell);
s=1;
break;
}
}
if(s==0){
printf("-1");
}
}
for 문을 통한 루프는 시간초과가 된다.
정답.
#include <stdio.h>
#include <string.h>
int main()
{
int diff;
int a=0,b=0,c=0,sell=0,s=0;
scanf("%d %d %d",&a,&b,&c);
diff=c-b;
if (diff<=0){
printf("-1");
}
else{
printf("%d\n",a/diff+1);
}
//a + b * 판매량 < c * 판매량
//--> a/(c-b)<판매량
// +1 하는 이유는 a/diff까지 하면 이익이 +-0가 되는 것임으로 최초로 이익이 발생하는 판매량은 '한' 개를 더해야한다.
}
많은 사람들 처럼 나또한 계산식으로 만들어 해결하는 법을 떠올리지 못했다.
인터넷을 참고해 풀었고 교훈을 얻었다.
루프문이 만능은 아니다.
빠르게 작동하는 다른 방법이 있는지 꼭 확인하자.