[GoLang] 백준 2607번 비슷한 단어

2024. 1. 21. 22:43· Go Lang/Algorithm
목차
  1. 개요
  2. 간단한 게 최고

개요

https://www.acmicpc.net/problem/2607

 

2607번: 비슷한 단어

첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이

www.acmicpc.net

처음에는 1920번 수 찾기를 풀었던 경험을 살려 정렬 후 비교하는 로직의 방향으로 코드를 개발했습니다.

다음 규칙을 만족하면 비슷한 단어를 취급합니다

  • 구성은 GOD와 DOG를 두고 각각의 알파뱃의 개수가 완전히 같은 경우를 말한다.
  • 문자의 글자수가 같다면 안에 구성이 하나는 달라도 된다.
  • 글자수 차이가 1개가 난다면 안의 구성이 하나는 달라도 된다.

 

비슷한 단어를 찾을 값과 비슷한 단어의 값을 담은 slice를 정렬 후 차례대로 비교하다 보니

예외케이스가 너무 많아 이 로직은 아니다 싶어 찾은 게 아래 방식입니다.

 

간단한 게 최고

해당 문제는 시간복잡도를 크게 신경 쓰지 않아도 되는 문제입니다.

그래서 입력받을 때마다 문자열을 반복문으로 돌려서 차례대로 배열에 포함되는지 검사하고 

포함된다면 비교값에서 제거해서 중복체크가 되지 않게 했습니다.

 

맞을 확률이 20%여서 시간 복잡도를 생각하며 어렵게 다가갔는데

반복문 처리로 쉽게 해결해서 허무했던 문제입니다.

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var num int
	var origin string

	fmt.Fscanln(reader, &num)
	fmt.Fscanln(reader, &origin)

	var result int

	for i := 1; i < num; i++ {
		var compare string
		fmt.Fscanln(reader, &compare)

		var bigStr, smallStr string
		// 배열의 길이가 큰 값을 bigStr, 작은 값을 smallStr 에 할당
		if len(origin) > len(compare) {
			bigStr, smallStr = origin, compare
		} else {
			bigStr, smallStr = compare, origin
		}

		var check int
		// 반복문을 돌며 bigStr 의 문자를 smallStr 에서 찾아서 제거
		for j := 0; j < len(bigStr); j++ {
			if strings.Contains(smallStr, string(bigStr[j])) {
				smallStr = strings.Replace(smallStr, string(bigStr[j]), "", 1)
			} else {
				check++
			}
		}

		if check <= 1 {
			result++
		}
	}
	fmt.Println(result)
}
반응형

'Go Lang > Algorithm' 카테고리의 다른 글

[GoLang] 백준 11726번, 11727번 2×n 타일링  (1) 2024.01.28
[GoLang] 백준 1018번 체스판 다시 칠하기  (1) 2024.01.22
[GoLang] 백준 7489번 팩토리얼  (0) 2024.01.17
[GoLang] 백준 1920번 수 찾기  (0) 2024.01.17
Go로 소수 구하기 with 백준 1929  (0) 2022.08.04
  1. 개요
  2. 간단한 게 최고
'Go Lang/Algorithm' 카테고리의 다른 글
  • [GoLang] 백준 11726번, 11727번 2×n 타일링
  • [GoLang] 백준 1018번 체스판 다시 칠하기
  • [GoLang] 백준 7489번 팩토리얼
  • [GoLang] 백준 1920번 수 찾기
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (193)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (10)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[GoLang] 백준 2607번 비슷한 단어
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.