일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- codility
- 알고리즘
- 맥북
- objective-c
- 네이버구름
- code
- error
- goormtest
- 헬스
- 구름TEST
- 안드로이드
- 아이폰 해상도
- Swift
- Object-c
- algorism
- 네이버알고리즘
- 코딩테스트
- codemonkey
- java
- 맥용
- 아이폰
- 구름알고리즘
- android
- iPhone
- 코딩
- ios
- Cordova
- naver
- 아이폰 비율
- 네이버
- Today
- Total
그래오늘은이거야
[Java]goorm test(구름TEST) 알고리즘 algorithm 점수 계산하기 본문
[Java]goorm test(구름TEST) 알고리즘 algorithm 점수 계산하기
jinhongstar 2019. 8. 30. 15:15안녕하세요 Leo 입니다.
이번 소개해줄 알고리즘 사이트는 구름TEST 라는 사이트 인데요,
NHN에서 투자 받아 개발한 알고리즘 사이트 입니다.
회사면접 코딩테스트를 하는 유명한 사이트죠...
저는 IOS (Object-c , Swift) 위주로 개발을 하고 가끔 안드로이드 개발을 하는데요...
회사에서 Java 로 코딩테스트를 하라고 해서 ... 하라면 해야죠... 풀어봤습니다.
제가 20문제 이상 푼것 같은데 이걸 공유 해드리도록 하죠...
이 글이 누군가에겐 "약"이 되고 누군가에겐 "독"이 될 것이다.
개발자라면 적어도 기본 알고리즘 정도는 스스로 학습하여 풀어봐야 한다.참고로 코딩테스트 문제를 제출 한 심사위원 분도제 블로그에서 답을 확인 한다는 것을 역으로 알아두고 보세요!! ㅎㅎ
알고리즘 문제
문제 : 모바일 퀴즈게임 구름Quiz에서는 사용자들에게 매일 열 개의 문제로 구성된 퀴즈를 제공하고 고득점 사용자들을 대상으로 매일매일 경품 추첨을 진행하고 있다. 매 일 정해진 시간에 퀴즈를 출제하는 구름 Quiz에서는 기존에 단순히 사용자가 맞춘 문제의 수대로 점수를 부여했기 때문에 한 번 몇 문제를 틀린 사용자들이 게임을 포기하는 경우가 종종 발생했다. 그래서 기획팀은 퀴즈의 채점 방식을 변경하기로 했는데 그 규칙은 아래와 같다.
사용자는 정해진 열 개의 문제를 한 번에 하나씩 차례대로 풀어야 한다.
틀린 문제는 0점을 부여한다.
문제를 맞추면 현재 연속으로 맞춘 정답에 비례해 k점을 부여한다.
k는 현재 오답 없이 연속으로 정답을 맞은 문제의 수이다.
현재 문제가 첫 문제이거나 앞의 문제가 오답이었다면 1점이 된다.
예를 들어서 한 사용자가 1번부터 10번 문제를 푼 결과를 [ O X X O O O X O O X ] 라고 한다면, 총 1 + 1 + 2 + 3 + 1 + 2 = 10점을 얻게 된다.
위의 예시처럼 사용자의 10문제에 대한 정오답 여부가 순서대로 주어질 때, 사용자가 얻게 될 점수를 계산하는 프로그램을 작성해보자.
입력 조건
한 줄의 입력이 주어진다. 문제의 입력은 대문자 O과 X로 이루어진 10글자의 문자열이다.
앞에서부터 순서대로 각 문제의 정오답 여부를 나타내며, O는 정답을 의미하고 X는 오답을 의미한다.
출력 조건
입력으로 주어진 퀴즈 정오답 결과를 바탕으로 규칙에 맞게 점수를 계산하여 출력한다.
입/출력 예시
⋇ 입출력 형식을 잘 지켜주세요.
␣ : 공백
↵ : 줄바꿈
−⇥ : 탭
보기 입력 1
OOXXXXXOOO
출력 1
9
보기 입력 2
XOOOXXXXOX
출력 2
7
======================================================================================================
풀이
======================================================================================================
/* package 구문을 넣으면 안됩니다 */
import java.util.*;
import java.io.*;
/* [Notice for Java]
* - 기본 제공되는 뼈대 코드는 입출력의 이해를 돕기위해 제공되었습니다.
* - 뼈대코드의 활용은 선택사항이며 코드를 직접 작성하여도 무관합니다.
*
* - 별도의 병렬 처리나 시스템콜, 네트워크/파일접근 등을 하지 마세요
* - 입출력의 양이 많은 문제는 BufferedReader와 BufferedWriter를 사용하면 시간을 단축할 수 있습니다.
* - 클래스 이름은 항상 Main이어야 합니다. 주의하세요.
* - 모든 입력과 출력은 System.in과 System.out 스트림을 이용해야 합니다.
*/
public class Main{
//표준입력을 수행할 Scanner를 선언한다
public static Scanner scanner = new Scanner(System.in);
public static void main(String[] args)
{ //프로그램의 시작부
String input = scanner.next();
String[] inputArr = input.split("");
if(input.length() > 10) return; //문제의 입력은 대문자 O과 X로 이루어진 10글자의 문자열이다.
int pluseAnswer = 1;
int savePluse = 0;
//Java regex 는 나중에 정리 O, X만 받아야한다. 시간이 없다.
for(int i=0; i <inputArr.length; i++){
if(inputArr[i].equals("O")){
//계산 공식 누적값 + 1;
savePluse = savePluse + pluseAnswer++;
if(10 != inputArr.length){ //마지막확인
//다음 값이 0 이라면 계산 값을 누적해라!
if(inputArr[i + 1].equals("O")){
savePluse = pluseAnswer;
}
}
}else{
//X 가 나오면 초기화 시켜야 한다.
pluseAnswer = 1;
}
}
int point = savePluse; //이 변수에 점수를 계산하여 저장한다.
System.out.println(point);
}
}
참고로 저는 알고리즘 풀이 점수는 높은 점수는 아닙니다.
일단 푸는 거에 집중했습니다. 알고리즘에 정답은 없습니다.
더 좋은 알고리즘을 만들어 내는게 목표 입니다.
알고리즘에 대하여 더 이야기 하실분은 댓글남겨주세요!
구름TEST 화면
구름테스트, 구름TEST 가 지원하는 프로그래밍 언어
그 외 Scala, Pascal, Lua, Objective-C, Rust, Cobol, Clojure, Smalltalk, Dart, Haskell, Perl, Common Lisp, D, Erlang 등
구름테스트, 구름TEST 를 2019년 현재 적용중인 회사
'세상 개발 > Java(SpringFramework)' 카테고리의 다른 글
[Java]goorm test(구름TEST) 알고리즘 algorithm 사다리 타기 (0) | 2019.08.30 |
---|---|
[Java]goorm test(구름TEST) 알고리즘 algorithm 버스 추천하기 (0) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 16진수 (2) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 가동 시간 예측하기 (0) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 알파벳 빈도 구하기 (0) | 2019.08.30 |