인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

sam7755님의 프로필 이미지
sam7755

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1~2주차 질문드립니다

작성

·

278

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

 

1~2주차 에서 세문제가 백준에 계속 질문해도 뚜렷한 해결방법이 안나와서 질문드립니다ㅠㅠ

 

 //1620 시간초과


int main(){
int a,b;
cin>>a>>b;
string arr[100000];


for(int i=0;i<a;i++){
	cin>>arr[i];
}

for(int i=0;i<b;i++){
	string s;
	cin>>s;
	
	if(s[0]<65){
		int p=stoi(s);
		cout<<arr[p-1]<<endl;
	}
	else{
		for(int j=0;j<a;j++){
			if(s==arr[j]) cout<<j+1<<endl;
		}
	}
}



return 0;
}

 //4659 출력형식이 잘못되었습니다



bool go(char p){
	
	if(p=='a'||p=='e'||p=='o'||p=='i'||p=='u') return 1;
	
	return 0;}

int main(){
string s;
while(1){

	cin>>s;
	if(s=="end") break;
	
	int a=0; 
	int b=0;
	int c=0;
	for(int i=0;i<s.size();i++){
		
	if(go(s[i])==1) a++;
	if(i>1&&go(s[i])==go(s[i-1])&&go(s[i-1])==go(s[i-2])) b++;
	if(i>0&&s[i]!='e'&&s[i]!='o'&&s[i]==s[i-1]) c++;
		
	}
	
	
	
	
	if(a>0&&b==0&&c==0) cout<<"<"<<s<<"> is acceptable."<<endl;
	else cout<<"<"<<s<<"> is  not acceptable."<<endl;
	
}




return 0;}

 //1189 메모리 초과



int dx[4]={0,1,0,-1};
int dy[4]={-1,0,1,0};//
bool visited[5][5]={0,};//
int x,y,m,n,k;
char arr[6][6]={0,};

int sum=0;
int dfs(int q,int w){


	
if(q==0&&w==m-1){
	if(visited[q][w]==k) sum++;
	
	return 0;
}

for(int i=0;i<4;i++){
 y=q+dy[i];
 x=w+dx[i];
if(y < 0 || x < 0 || y >=n || x >= m) continue;
if(!visited[y][x]&&arr[y][x]!='T'){

dfs(y,x);
visited[y][x]=visited[q][w]+1;
visited[q][w]=0;

}	
}


return 0;
}




int main(){

	
	cin>>n>>m>>k;
	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>arr[i][j];//
		}
	}
	
	visited[n-1][0]=1;
	dfs(n-1,0);
	

cout<<sum<<endl;

	return 0;
}

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 kim님ㅎㅎ

1620

문제를 잠깐볼까요?

N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수

자, 그러면 이 코드의 시간복잡도는 얼마일까요? b, a루프 합쳐서.

for(int i=0;i<b;i++){
	string s;
	cin>>s;
	
	if(s[0]<65){
		int p=stoi(s);
		cout<<arr[p-1]<<endl;
	}
	else{
		for(int j=0;j<a;j++){

4659

제가 지금 보기에는 맞는 것같습니다. 제가 아래의 글을 남겼는데 해당 내용 참고해서 다시 부탁드립니다.

1189

dfs(y,x);
visited[y][x]=visited[q][w]+1;
visited[q][w]=0;

이 코드요.

dfs를 하고 visited를 거는게 맞을까요?

 

 

kim님 솔직히 이렇게 올려주시면 제가 디버깅하기가 너무 어렵습니다...

kim님이 제출하신 코드 있죠?

백준 - 문제 - 내제출탭에 보면 코드 오른쪽 아래에 공유하기 버튼이 있는데 그 버튼을 클릭하셔서 위 3가지 문제에 대한 링크 부탁드립니다.

참고로 해당 내용은 "0주차 - 질문하는 법"에 설명되어있습니다. 해당 강의 참고해주셔서 다음부터는 그렇게 올려주세요.

감사합니다.

sam7755님의 프로필 이미지
sam7755

작성한 질문수

질문하기