Algorithm/etc

[코딩연습] 동명이인 수 구하기

Anna-Jin 2021. 11. 8. 15:58
728x90

 

 

풀이

더보기
  • 이름 하나를 기준으로 세워놓고 각각의 이름과 비교하여 동명이인인지 구한다.
  • 동명이인을 만났을 때, 동명이인의 수를 중복으로 검색하는 걸 방지하기 위해서 일종의 스위치(?)를 만든다 => boolean
  • 이미 동명이인으로 판별이 되고 나서 다음 이름을 검색할 때 같은 이름으로 검색하는 것을 방지하기 위해서, 동명이인을 만났을 때 해당이름을 다른 값으로 바꿔준다.
  • 동명이인을 만나서 다른 값으로 바뀐 경우 검색할 때 skip해준다 => continue

 

		String memberStr = "김혜수:송강호:정우성:이민정:송강호:이민정:이민정:이정재:이병헌:이정재";
		String[] names = memberStr.split(":");
		int sameCount = 0;
		
		for (int i = 0; i < names.length; i++) { // 기준이 되는 이름
			String name = names[i]; // 기준이름
			boolean isSame = false;
			if (name.equals("-")) { // 동명이인으로 체크돼서 '-'일 경우 skip!!
				continue;
			}
			
			for (int j = i + 1; j < names.length; j++) { // i 다음 번째부터 반복문이 돌아야하기 때문에 i + 1
				if (name.equals(names[j])) {
					isSame = true; // 동명이인의 수를 중복으로 검색하지 않게하기 위해서 스위치(?)를 만들어 주는 것
					names[j] = "-"; // 동명이인일 때, 다시 한 번 검색하는 것을 방지
				}
			}
			
			if (isSame) { // 참: 기준 이름에 대해서동명이인인 적이 있었다.
				sameCount++;
			}
		}
		
		System.out.println("동명이인 종류 수 : " + sameCount);

728x90

'Algorithm > etc' 카테고리의 다른 글

[코딩연습] 영단어 퀴즈  (0) 2021.11.08
[코딩연습] 2차원 배열  (0) 2021.11.05
[코딩연습] 배열 연습  (0) 2021.11.04
[코딩연습] 메소드 생성 연습 2  (0) 2021.11.03
[코딩연습] 메소드 생성 연습 1  (0) 2021.11.02