백준 온라인 코딩 문제풀이
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
코드 참고
wny0320 (박 상운)
Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.
replit.com
1316번에 대해 다룸
1316
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int Input = Int32.Parse(Console.ReadLine());
List<string> Input_list = new List<string>();
int cnt = 0;
for(int i = 0; i < Input; i++)
{
Input_list.Add(Console.ReadLine());
}
for(int i = 0; i < Input_list.Count; i++)
{
List<char> char_list = new List<char>();
for (int j = 0; j < Input_list[i].Length; j++)
{
if(j!=0)
{
if (char_list.Contains(Input_list[i][j]))
{
if(Input_list[i][j] != Input_list[i][j-1])
{
cnt += 1;
break;
}
}
}
char_list.Add(Input_list[i][j]);
}
}
Console.WriteLine(Input - cnt);
}
}
우선 그룹 단어라는 정의에 대해서 집중함
그룹 단어는
1. aaabbbccc와 같이 연속되어도 상관 없는 단어
2. abc와 연속되지 않아도 상관 없는 단어
그리고 지켜야 할 조건은
1. abca와 같이 a가 연속되어 나오지 않고 나중에 다시 나오면 그룹 단어가 아님
따라서 문제 풀이 방식을 정함
우선 단어수를 받아 그만큼 리스트에 문자열을 다 받음
그 문자열 수만큼, 그리고 문자열의 길이만큼 2중 for문을 돌림
만약 첫번째 문자(j != 0)가 아니라면 if문을 들어감, 아니라면 char_list에 추가
char_list에 해당 문자(Input_list[i][j])가 없다면 리스트에 추가, 있다면 그 전 문자가 같은 문자인지 확인
만약 같은 문자가 아니면 break로 for문을 깨고 cnt값을 증가시킴
이렇게 하게 되면 cnt의 값은 그룹 단어가 아닌 단어의 수가 됨
따라서 Input - cnt를 하여 그룹 단어의 갯수를 출력
'BaekJoon[C#]' 카테고리의 다른 글
기본 수학 1단계 2292 (0) | 2022.10.06 |
---|---|
기본 수학 1단계 1712 (0) | 2022.10.05 |
문자열 단계 2941 (0) | 2022.10.03 |
문자열 단계 5622 (0) | 2022.09.28 |
문자열 단계 1152 (0) | 2022.09.27 |