알고리즘/백준

백준 11721번 - 열 개씩 끊어 출력하기 / Go

Hwisaek 2022. 4. 30. 01:33
반응형

문제: https://www.acmicpc.net/problem/11721

 

11721번: 열 개씩 끊어 출력하기

첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.

www.acmicpc.net

문제 설명

더보기

문제

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.

한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.

출력

입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.

예제 입력 1 복사

BaekjoonOnlineJudge

예제 출력 1 복사

BaekjoonOn
lineJudge

예제 입력 2 복사

OneTwoThreeFourFiveSixSevenEightNineTen

예제 출력 2 복사

OneTwoThre
eFourFiveS
ixSevenEig
htNineTen
​

출처

알고리즘 분류


 


정답

package main

import (
	"bufio"
	"os"
	"strings"
	"testing"
)

func main() {
	rd := bufio.NewReader(os.Stdin)
	wr := bufio.NewWriter(os.Stdout)

	word := scan11721(rd)

	_, _ = wr.WriteString(solution11721(word))
	_ = wr.Flush()
}

func solution11721(word string) (result string) {
	strArr := make([]string, 0, len(word)/10+1)

	for i := 0; i < len(word)/10; i++ {
		strArr = append(strArr, word[i*10:(i+1)*10])
	}
	strArr = append(strArr, word[len(word)/10*10:])

	result = strings.Join(strArr, "\n")
	return
}

func scan11721(rd *bufio.Reader) string {
	str, _ := rd.ReadString('\n') // 여기서 text는 마지막에 줄바꿈 문자를 포함하므로
	str = strings.TrimSpace(str)  // 줄바꿈 문자를 제거해야 함
	return str
}

func Benchmark11721(b *testing.B) {
	for i := 0; i < b.N; i++ {
		solution11721("OneTwoThreeFourFiveSixSevenEightNineTenOneTwoThreeFourFiveSixSevenEightNineTenOneTwoThreeFourFiveSix")
	}
}

func Test_solution11721(t *testing.T) {
	type args struct {
		word string
	}
	tests := []struct {
		name       string
		args       args
		wantResult string
	}{
		{name: "", args: args{word: "BaekjoonOnlineJudge"}, wantResult: "BaekjoonOn\nlineJudge"},
		{name: "", args: args{word: "OneTwoThreeFourFiveSixSevenEightNineTen"}, wantResult: "OneTwoThre\neFourFiveS\nixSevenEig\nhtNineTen"},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if gotResult := solution11721(tt.args.word); gotResult != tt.wantResult {
				t.Errorf("solution11721() = %v, want %v", gotResult, tt.wantResult)
			}
		})
	}
}

 


풀이

 10개씩 끊어서 출력하는 간단한 문제이다.

 

 for문을 10으로 나눈 몫을 조건으로 돌려서 10글자씩 출력하고, 마지막엔 나머지 글자를 출력하면 된다.

반응형