링크

 

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

 

18406번: 럭키 스트레이트

첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다.

www.acmicpc.net


문제

 


풀이

 

* 입력 받는 자릿수는 짝수 형태로만 주어진다.

짝수라는 말은 전체 수가 짝수가 아니라 자릿수가 짝수 입니다.

 

 

첫 번째 예제

123402를 입력 받았을 때

123402 의 자릿수는 6 이라서 짝수.

입력 받은 자릿수를 반반 나누어 합산.

 

*절반 왼쪽

1 + 2 + 3 = 6

 

*절반 오른쪽

4 + 0 + 2 = 6

 

왼쪽과 오른쪽 합이 둘 다 6이므로 결과는 같다.

결과가 같으면 "LUCKY" 라는 문자열 반환.

 

 

 

두 번째 예제

7755 의 자리수는 4 라서 짝수

입력 받은 자릿수를 반반 나누어 합산.

 

*절반 왼쪽

7 + 7 = 14

 

*절반 오른쪽

5 + 5 = 10

 

왼쪽 합 : 14

오른쪽 합 : 10

 

14 와 10은 같지 않음.

왼쪽 합과 오른쪽 합이 같지 않으면 "READY" 라는 문자열 반환.

 


받은 숫자 자릿수를 절반씩 나누어서 합산을 한 뒤 비교해보는 방식으로 풀었습니다.

 

위의 로직 구현

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
 
	/**
	 * 럭키 스트레이트
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str 	= br.readLine();
		int count 	= str.length();
		int left	= 0;
		int right	= 0;
		for (int i = 0; i < count/2; ++i) {
			left += (str.charAt(i));
		}
		for (int i = count/2; i < count; ++i) {
			right += (str.charAt(i));
		}
		System.out.println((left == right ? "LUCKY":"READY"));
	}
}

 

후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩테스트는 문제 없음.

4 : 평균적인 기업 코딩테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제 .

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

난이도는 매우 쉬운 편이었으며 for문을 사용할 때 길이를 지정해서 사용할 줄 알면 어렵지 않다.

링크

 

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

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net


 

문제

 

 


풀이

 

2          -> 출력할 로우 개수

3 ABC   -> 첫 번째 로우

5 /HTP  -> 두 번째 로우

 

출력할 로우는 총 2번 이며

 

* 첫 번째 로우는 3번씩 ABC 를 각각 출력하면 된다.

결과 : AAABBBCCC

 

* 두 번째 로우는 5번씩 /HTP 를 각각 출력하면 된다.

결과 : /////HHHHHTTTTTPPPPP

 


어떤 알고리즘인지 파악하면 푸는데 어려움이 없다.

앞에 받은 숫자만큼 뒤에있는 문자열을 1개씩 읽어서 반복문들 실행시키면 된다.

 

위의 로직 구현

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	/**
	 * 문자열 반복
	 * @param args
	 */
	public static void main(String[] args) throws IOException {		
		BufferedReader br	= new BufferedReader(new InputStreamReader(System.in));
		int cnt 			= Integer.parseInt(br.readLine());
		StringBuilder sb 	= new StringBuilder();
		
		for (int k = 0; k < cnt; ++k) {
			String[] reqStrArr 	= br.readLine().split(" ");
			int loopCnt 		= Integer.parseInt(reqStrArr[0]);
			String str 			= reqStrArr[1];
			int strCnt 			= str.length();
			
			for (int i = 0; i < strCnt; ++i) {
				for (int j = 0; j < loopCnt; ++j) {
					sb.append(str.charAt(i));
				} //for -3
			} //for -2
			sb.append("\n");
		} //for -1
		System.out.println(sb.toString());
	}
}


 

후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩테스트는 문제 없음.

4 : 평균적인 기업 코딩테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제 .

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

난이도는 매우 쉬운 편이었으며 반복문을 이용하면 쉽게 풀 수 있다.

 

 

 

 

 

링크

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

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net


문제

 


 

풀이

 

1. 받은 문자열을 1자리씩 배열로 나눔

2. 반복문으로 배열의 모든 값 더하기

 

"1234" 라는 값을 받음

{1,2,3,4} 1자리씩 배열로 나눔

반복문으로 배열의 모든 값 더하기

+1  -> 1

+2  -> 3

+3  -> 6

+4  -> 10

결과 : 10

 


위의 로직 구현

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	/**
	 * 숫자의 합
	 * @param args
	 */
	public static void main(String[] args) throws IOException {		
		BufferedReader br 	= new BufferedReader(new InputStreamReader(System.in));
		int cnt 			= Integer.parseInt(br.readLine());
		String[] arr 		= br.readLine().split("");
		int sum 			= 0;
		for (int i = 0; i < cnt; ++i) {
			sum += Integer.parseInt(arr[i]);
		}
		System.out.print(sum);
	}
}

 

후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩테스트는 문제 없음.

4 : 평균적인 기업 코딩테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제 .

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

난이도는 매우 쉬운 편이었으며 문자열을 1개씩 읽을 수 있는 방법만 알면 풀 수 있는 문제이다.

 

 

 

 

 

 

 

 

 

 

 

 

링크

 

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

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net


 

문제

 


풀이

 

1. 문자열 입력 받음

2. 각각의 알파벳 a - z 까지 위치를 반환 -> 알파벳은 26개. -> 총 26개 위치 반환

3. a - z 중 일치하는 알파벳이 없으면 -1 반환

 

indexOf 라는 내장함수 사용.

찾는 단어가 있으면 해당 인덱스를 반환하고

찾는 단어가 없으면 -1로 반환한다.

 

* indexOf의 내부 모습

 

public static void main(String[] args) {
	String str = "baekjoon";
	System.out.println(str.indexOf("b"));
	System.out.println(str.indexOf("a"));
	System.out.println(str.indexOf("e"));
	System.out.println(str.indexOf("k"));
	System.out.println(str.indexOf("j"));
	System.out.println(str.indexOf("o"));
	System.out.println(str.indexOf("o"));
	System.out.println(str.indexOf("n"));
}


indexOf를 사용하여 로직 구현

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	/**
	 * 알파벳찾기
	 * @param args
	 */
	public static void main(String[] args) throws IOException {		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();	
		StringBuilder sb = new StringBuilder();
		for(char i = 'a'; i <= 'z'; ++i) {
			sb.append(str.indexOf(i)).append(" ");
        }
		System.out.println(sb.toString().substring(0,sb.length()-1));
	}
}


후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩테스트는 문제 없음.

4 : 평균적인 기업 코딩테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제 .

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

난이도는 매우 쉬운 편이었으며 내장함수를 알고 있다면 쉽게 풀 수 있는 문제이다.

+ Recent posts