#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(const char* s) {
int answer = -1;
int i,j,cnt=0,num=0,len,a=0,b=0,c=0,tmp=0;
len=strlen(s);
for(i=0;i<len;i++){
cnt=0;
a=0;
b=0;
c=0;
for(j=i%len;j-i<len;j++){
if(s[j%len]=='(') a+=i;
else if(s[j%len]=='{') b+=i;
else if(s[j%len]=='[') c+=i;
else if(s[j%len]==')'){
tmp=a;
a=0;
}
else if(s[j%len]=='}'){
tmp=b;
b=0;
}
else if(s[j%len]==']'){
tmp=c;
c=0;
}
if(a<0||b<0||c<0) break;
if(a==0&&(tmp<b||tmp<c)){
break;
}
if(b==0&&(tmp<a||tmp<c)){
break;
}
if(c==0&&(tmp<a||tmp<b)){
break;
}
printf("a:%d b:%d c:%d\n",a,b,c);
}
if(a==0&&b==0&&c==0) num++;
}
answer=num;
return answer;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(const char* s) {
int answer = -1;
int i,j,cnt=0,num=0,len;
len=strlen(s);
for(i=0;i<len;i++){
cnt=0;
for(j=i%len;j-i<len;j++){
//printf("j:%c ",s[j%len]);
if(s[j%len]=='['){
if(s[(j+1)%len]!='}'&&s[(j+1)%len]!=')') cnt++;
}
else if(s[j%len]=='{'){
if(s[(j+1)%len]!=')'&&s[(j+1)%len]!=']') cnt++;
}
else if(s[j%len]=='('){
if(s[(j+1)%len]!=']'&&s[(j+1)%len]!='}') cnt++;
}
else cnt--;
//printf("cnt:%d ",cnt);
if(cnt<0) cnt=-9999;
}
if(cnt==0) num++;
}
answer=num;
return answer;
}
int main()
{
char s[1000]={0};
scanf("%s",s);
printf("%d",solution(s));
return 0;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* dirs) {
int answer = 0;
int map[10][10]={0};
int i,j,len,x=5,y=5,cnt=0;
len=strlen(dirs);
for(i=0;i<len;i++){
if(dirs[i]=='U'){
map[x][y]++;
y++;
}
else if(dirs[i]=='D'){
map[x][y]++;
y--;
}
else if(dirs[i]=='R'){
map[x][y]++;
x++;
}
else if(dirs[i]=='L'){
map[x][y]++;
x--;
}
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
//printf("%d ",map[j][i]);
if(map[i][j]!=0) cnt++;
}
//printf("\n");
}
answer=cnt;
return answer;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* dirs) {
int answer = 0;
int map[13][13]={0};
int i,j,len,x=6,y=6,cnt=0;
len=strlen(dirs);
for(i=0;i<=12;i++){
for(j=0;j<=12;j++){
if(i==0||j==0||i==12||j==12) map[i][j]=-1;
}
}
for(i=0;i<len;i++){
if(dirs[i]=='U'&&map[x][y+1]!=-1){
map[x][y]++;
y++;
}
else if(dirs[i]=='D'&&map[x][y-1]!=-1){
map[x][y]++;
y--;
}
else if(dirs[i]=='R'&&map[x+1][y]!=-1){
map[x][y]++;
x++;
}
else if(dirs[i]=='L'&&map[x-1][y]!=-1){
map[x][y]++;
x--;
}
}
for(i=1;i<=11;i++){
for(j=1;j<=11;j++){
printf("%d ",map[j][i]);
if(map[i][j]>0) cnt++;
}
printf("\n");
}
answer=cnt;
return answer;
}
만약 출발한 좌표가 다를경우 cnt를 따로 추가하기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int solution(const char* dirs) {
int answer = 0;
int map[13][13]={0};
int map2[13][13][3]={0};
int i,j,len,x=6,y=6,cnt=0;
len=strlen(dirs);
for(i=0;i<=12;i++){
for(j=0;j<=12;j++){
if(i==0||j==0||i==12||j==12){
map[i][j]=-1;
}
}
}
for(i=0;i<len;i++){
if(dirs[i]=='U'&&map[x][y+1]!=-1){
map[x][y]++;
y++;
map2[x][y][1]=x;
map2[x][y][2]=y-1;
}
else if(dirs[i]=='D'&&map[x][y-1]!=-1){
map[x][y]++;
y--;
map2[x][y][1]=x;
map2[x][y][2]=y+1;
}
else if(dirs[i]=='R'&&map[x+1][y]!=-1){
map[x][y]++;
x++;
map2[x][y][1]=x-1;
map2[x][y][2]=y;
}
else if(dirs[i]=='L'&&map[x-1][y]!=-1){
map[x][y]++;
x--;
map2[x][y][1]=x+1;
map2[x][y][2]=y;
}
}
for(i=1;i<=11;i++){
for(j=1;j<=11;j++){
printf("%d ",map[j][i]);
if(map[i][j]>0) cnt++;
}
printf("\n");
}
answer=cnt;
return answer;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int solution(const char* dirs) {
int answer = 0;
int map[13][13]={0};
int map2[13][13][3]={0};
int i,j,len,x=6,y=6,cnt=0;
len=strlen(dirs);
for(i=0;i<=12;i++){
for(j=0;j<=12;j++){
if(i==0||j==0||i==12||j==12){
map[i][j]=-1;
}
}
}
for(i=0;i<len;i++){
if(dirs[i]=='U'&&(map[x][y+1]!=-1||(map2[x][y+1][1]!=x&&map2[x][y+1][2]!=y))){
map[x][y]++;
y++;
map2[x][y][1]=x;
map2[x][y][2]=y-1;
}
else if(dirs[i]=='D'&&(map[x][y-1]!=-1||(map2[x][y-1][1]!=x&&map2[x][y-1][2]!=y))){
map[x][y]++;
y--;
map2[x][y][1]=x;
map2[x][y][2]=y+1;
}
else if(dirs[i]=='R'&&(map[x+1][y]!=-1||(map2[x+1][y][1]!=x&&map2[x+1][y][2]!=y))){
map[x][y]++;
x++;
map2[x][y][1]=x-1;
map2[x][y][2]=y;
}
else if(dirs[i]=='L'&&(map[x-1][y]!=-1||(map2[x-1][y][1]!=x&&map2[x-1][y][2]!=y))){
map[x][y]++;
x--;
map2[x][y][1]=x+1;
map2[x][y][2]=y;
}
}
for(i=1;i<=11;i++){
for(j=1;j<=11;j++){
printf("%d ",map[j][i]);
if(map[i][j]>0) cnt++;
}
printf("\n");
}
answer=cnt;
return answer;
}