JAVA

2021. 08. 07 Java 연습 문제 풀기 & 모르는 문제

석이 2021. 8. 7. 17:37

* 코딩도장이라는 사이트에서 Level 1짜리 문제풀이를 진행했다.

* 코딩도장 사이트 : https://codingdojang.com/

 

코딩도장

프로그래밍 문제풀이를 통해서 코딩 실력을 수련

codingdojang.com

 

1.

10미만의 자연수에서 3과 5의 배수를 구하면 3,5,6,9이다. 이들의 총합은 23이다. 1000미만의 자연수에서 3,5의 배수의 총합을 구하라.

 

package aloneSolvingExample;

public class Multiples_of_3_or_5 {

	public static void main(String[] args) {
		
		// 1000 아래의 3과 5의 배수의 합을 구하시오.

		int sum = 0;
		for (int i = 1; i < 1000; i++) {
			if (i%3 == 0 || i%5 == 0) {
				sum += i;
			}
		}
		
		System.out.println("3과 5의 배수 합 : " + sum);
		// 답 : 233,168
		
	}

}

 

2. 

A씨는 개발된 소스코드를 특정업체에 납품하려고 한다. 개발된 소스코드들은 탭으로 들여쓰기가 된것, 공백으로 들여쓰기가 된 것들이 섞여 있다고 한다. A씨는 탭으로 들여쓰기가 된 모든 소스를 공백 4개로 수정한 후 납품할 예정이다.

A씨를 도와줄 수 있도록 소스코드내에 사용된 탭(Tab) 문자를 공백 4개(4 space)로 바꾸어 주는 프로그램을 작성하시오.

 

package aloneSolvingExample;

public class replace_tab_to_blank {

	public static void main(String[] args) {
    
		// 예시를 가져와보자
		String str = "int sum = 0;\r\n"
				+ "		for (int i = 1; i < 1000; i++) {\r\n"
				+ "			if (i%3 == 0 || i%5 == 0) {\r\n"
				+ "				sum += i;\r\n"
				+ "			}\r\n"
				+ "		}";
		
		System.out.println(str.replace("\t", "    "));
		
	}

}

이건 솔직히 잘 한건지 잘 모르겠다..

 

3. 

A씨는 게시판 프로그램을 작성하고 있다.

A씨는 게시물의 총 건수와 한 페이지에 보여줄 게시물수를 입력으로 주었을 때 총 페이지수를 리턴하는 프로그램이 필요하다고 한다.

입력 : 총건수(m), 한페이지에 보여줄 게시물수(n) (단 n은 1보다 크거나 같다. n >= 1)
출력 : 총페이지수

A씨가 필요한 프로그램을 작성하시오.

 

 

package aloneSolvingExample;

public class counting_page_number {

	public static void main(String[] args) {
		
		int m = 74896; //총 게시물 건수
		int n = 13; //한 페이지 게시물 수
		
		int quotient = m/n;
		int remainder = m%n;
		
		int quotientPlusOne = quotient + 1;
		
		System.out.println("총 게시물 수는 " + m + "입니다.");
		System.out.println("한 페이지의 게시물 수는 " + n + "입니다.");
		if (remainder == 0) {
			System.out.println("총 페이지 수는 " + quotient + "입니다.");
		} else {
			System.out.println("총 페이지 수는 " + quotientPlusOne + "입니다.");
		}
//		총 게시물 수는 74896입니다.
//		한 페이지의 게시물 수는 13입니다.
//		총 페이지 수는 5762입니다.


	}

}

 

4. 그리고 대망의 문제.....

주어진 문자열(공백 없이 쉼표로 구분되어 있음)을 가지고 아래 문제에 대한 프로그램을 작성하세요.

이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,전경헌,송정환,김재성,이유덕,전경헌

  1. 김씨와 이씨는 각각 몇 명 인가요?
  2. "이재영"이란 이름이 몇 번 반복되나요?
  3. 중복을 제거한 이름을 출력하세요.
  4. 중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요.

 

1번 문제에만 한 시간 이상 쏟았는데 결국 실패했다. 논리는 맞는 것 같은데 도대체 어디서 문제가 생기는건지 알 수 없다. (파워구글링 했으나 뭘 검색해야할지도 몰라서 결국 실패. 멘탈 붕괴)

 

package aloneSolvingExample;

public class array_example {

	public static void main(String[] args) {
		
		String[] name = {"이유덕", "이재영", "권종표", "이재영", "박민호", "강상희", "이재영", "김지완", "최승혁", "이성연", "박영서", "박민호", "전경헌", "송정환", "김재성", "이유덕", "전경헌"};
		
		// 1. 김씨와 이씨는 각각 몇 명인가?
		
		int sum = 0;
		for (int i = 0; i < name.length; i++) {
			String lastname = name[i];
			String j = lastname.substring(0, 1);
			
			if (j == "이" || j == "김") {
				sum += 1;
			}
			
		}
	
		System.out.println(sum);
		
	}

}

아무리 봐도 맞는거 같은데 ㅠㅠㅠㅠㅠㅠ 아래는 디버깅 결과인데 if 안으로 들어가질 않는다.....

 

 

 

substring()의 기능이 String이 아닌건지, 뭔지... 도대체 모르겠음. 오늘은 여기까지. 머리가 너무 아프다..