그래오늘은이거야

[Java]goorm test(구름TEST) 알고리즘 algorithm 연결 리스트 중간 값 삭제 본문

세상 개발/Java(SpringFramework)

[Java]goorm test(구름TEST) 알고리즘 algorithm 연결 리스트 중간 값 삭제

jinhongstar 2019. 8. 30. 14:45
728x90
반응형

안녕하세요 Leo 입니다.

 

이번 소개해줄 알고리즘 사이트는 구름TEST 라는 사이트 인데요,

 

NHN에서 투자 받아 개발한 알고리즘 사이트 입니다.

 

회사면접 코딩테스트를 하는 유명한 사이트죠...

 

저는 IOS (Object-c , Swift) 위주로 개발을 하고 가끔 안드로이드 개발을 하는데요...

 

 

회사에서 Java 로 코딩테스트를 하라고 해서 ... 하라면 해야죠... 풀어봤습니다.

 

제가 20문제 이상 푼것 같은데 이걸 공유 해드리도록 하죠...

 

 

이 글이 누군가에겐 "약"이 되고 누군가에겐 "독"이 될 것이다.

개발자라면 적어도 기본 알고리즘 정도는 스스로 학습하여 풀어봐야 한다.참고로 코딩테스트 문제를 제출 한 심사위원 분도제 블로그에서 답을 확인 한다는 것을 역으로 알아두고 보세요!! ㅎㅎ

 

 

 

알고리즘 문제

 

문제 : 
연결 리스트에 자료를 입력하고 연결 리스트의 중간에 있는 노드를 삭제한 결과를 출력하는 프로그램을 작성하십시오.

1 2 3 4 5가 순서대로 연결 리스트를 이용해 연결되어 있는 상황이라고 가정하고 문제를 해결하도록 하겠습니다.



입력

없음

출력

중간에 있는 노드(3)를 삭제한 형태

* 마지막에 'NULL' 출력


입/출력 예시
⋇ 입출력 형식을 잘 지켜주세요.
␣ : 공백
↵ : 줄바꿈
−⇥ : 탭
보기 입력 1
없음
출력 1

1 2 4 5 NULL

 

======================================================================================================

풀이

======================================================================================================

 

//Please don't change class name 'Main'
import java.util.Scanner;
import java.util.Arrays;
class Main {

  public static void main(String[] args) {
		
		int[] linkedList = new int[]{1,2,3,4,5};
		int deleteNode = 3;

		for(int i=1; i <= linkedList.length; i++){
			
				//3을 제거
				if(i == deleteNode){ //삭제할 노드
					for(int j=1; j <= linkedList.length - deleteNode; j++){ //선택된 값에서 전체값 만큼만 돈다.
						int changeCount = deleteNode + j - 1; //-1 은 0부터 배열시작 값을빼기위한
						
						//temp에 값을 저장 후 뒤로 한칸씩 채운다.
						int temp = linkedList[changeCount];
						linkedList[changeCount -1] = temp;
						
						//3을 제거 한 후 마지막에 0으로 대입 int[] 에는 null이 안들어가서 0으로 대치
						if((deleteNode + j) == linkedList.length){ //마지막 값 구하기.
							linkedList[linkedList.length-1] = 0;
						}
						
					}
					
				}
		}
		//0으로 변환한 값을 다시 NULL로 repalce
		// String str = Arrays.toString(linkedList);
		String str = Arrays.toString(linkedList).replace(", "," ").replace("[","").replace("]","").replace("0","NULL");
		System.out.print(str);
  }
}




 

 

참고로 저는 알고리즘 풀이 점수는 높은 점수는 아닙니다. 

 

일단 푸는 거에 집중했습니다.  알고리즘에 정답은 없습니다.

 

더 좋은 알고리즘을 만들어 내는게 목표 입니다.

 

 

알고리즘에 대하여 더 이야기 하실분은 댓글남겨주세요!

 

 

 

 

 

 

 

구름TEST 화면

 

 

 

 

https://codingtest.goorm.io/

 

구름TEST - 개발자 채용을 위한 코딩 테스트, 프로그래밍 시험

구름TEST는 LG전자, 라인, NHN, 스마일게이트 등에서 활용 중인 온라인 코딩 테스트 서비스입니다. 부서별, 직군별 시험 관리부터 문제 제작, 관리 기능과 응시자 초대 기능 등 개발자 채용을 위한 모든 기능을 제공합니다.

codingtest.goorm.io

 

구름테스트, 구름TEST 가 지원하는 프로그래밍 언어

 

그 외 Scala, Pascal, Lua, Objective-C, Rust, Cobol, Clojure, Smalltalk, Dart, Haskell, Perl, Common Lisp, D, Erlang 등 

 

 

 

구름테스트, 구름TEST 를 2019년 현재 적용중인 회사

 

 

 

반응형
Comments