https://www.acmicpc.net/problem/1652
문자열을 다루는 문제다.
파이썬에서는 운좋게 넘어간건지 문제가 없었는데,
C++에서는 처음에 지나간 자리인지 아닌지 체크해야하는 bool을 넣어야 오류가 안 났다.
파이썬 코드
n = int(input())
cnt_w = 0
cnt_h = 0
room = []
bed = [0,0]
for i in range(n): #get input
room.append(list(map(str,input())))
for i in range(n): #cnt bed
cnt_h=0
cnt_w = 0
for j in range(n):
if room[j][i] == ".":
cnt_h += 1
elif room[j][i] == "X":
cnt_h = 0
if cnt_h == 2:
bed[1] += 1
if room[i][j] == ".":
cnt_w += 1
elif room[i][j] == "X":
cnt_w = 0
if cnt_w ==2:
bed[0] += 1
print(bed[0],bed[1])
C++코드
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
char room[n][n];
int w=0,h=0;
for(int i=0;i<n;i++){
cin >> room[i];
}
int bed[2]={0,};
for(int i=0;i<n;i++){
int cnt_h = 0;
int first_h = 0;
int cnt_w = 0;
int first_w = 0;
for(int j=0;j<n;j++){
if(room[j][i]=='.')
cnt_h ++;
if(cnt_h==2){
if(!first_h){
h++;
bed[1]++;
}
first_h = 1;
cnt_h = 0;
}
else if(room[j][i]=='X'){
cnt_h = 0;
first_h = 0;
}
if(room[i][j]=='.')
cnt_w ++;
if(cnt_w==2){
if(!first_w){
w++;
bed[0]++;
}
first_w = 1;
cnt_w = 0;
}
else if(room[i][j]=='X'){
cnt_w = 0;
first_w = 0;
}
}
}
cout<<bed[0]<<' '<<bed[1];
}
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ/알고리즘/DFS/그래프/파이썬(python)/C++]#2606_바이러스 (0) | 2021.09.05 |
---|---|
[백준/BOJ/알고리즘/파이썬(python)]#2621_카드게임 (0) | 2021.09.04 |
[백준/BOJ/알고리즘/파이썬(python)/C++/그리디/정렬]#1449_수리공 항승 (0) | 2021.09.03 |
[백준/boj/알고리즘/파이썬(python)/C++/DFS]#11724:연결요소의 개수 (0) | 2021.09.01 |
[백준/boj/알고리즘/파이썬]#9655:돌 게임 (0) | 2021.08.31 |