이클립스에서 파이썬을 사용할때 테마를 입히고 싶을때가 있다 


File-export-General-Preferences->Export all 체크 -> 이름 지정후 내보내기 한다 



file_export_version=3.0
/instance/org.python.pydev/BACKQUOTES_COLOR=255,255,255
/instance/org.python.pydev/COMMENT_COLOR=153,51,204
/instance/org.python.pydev/CODE_COLOR=255,255,255
/instance/org.python.pydev/NUMBER_COLOR=204,255,51
/instance/org.python.pydev/CLASS_NAME_COLOR=255,204,0
/instance/org.python.pydev/KEYWORD_COLOR=255,102,0
/instance/org.python.pydev/SELF_COLOR=255,255,0
/instance/org.python.pydev/FUNC_NAME_COLOR=255,204,0
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.SelectionForeground.SystemDefault=false
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.Background.SystemDefault=false
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.Background=0,0,0
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.Foreground.SystemDefault=false
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.Foreground=255,255,255
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.SelectionBackground.SystemDefault=false
/instance/org.eclipse.ui.editors/AbstractTextEditor.Color.SelectionBackground=0,0,136
/instance/org.eclipse.ui.editors/pydevOccurrenceIndicationColor=128,64,0
/instance/org.eclipse.ui.editors/lineNumberColor=255,255,255
/instance/org.eclipse.ui.editors/printMargin=true
/instance/org.eclipse.ui.editors/printMarginColor=255,0,0
/instance/org.eclipse.ui.editors/currentLineColor=70,70,70
/instance/org.eclipse.ui.editors/currentIPTextStyle=BOX
/instance/org.eclipse.ui.editors/currentIPIndication=true
/instance/org.eclipse.ui.editors/currentIPHighlight=false
/instance/org.eclipse.ui.editors/secondaryIPTextStyle=DASHED_BOX
/instance/org.eclipse.ui.editors/secondaryIPHighlight=false
/instance/org.eclipse.ui.editors/secondaryIPIndication=true


이건 어떤 외국 유저분 세팅인데export 된 epf 파일에 붙혀넣기 해준다 

그리고 


File-import-General-Preferences->Import all 체크 -> 붙혀넣기 해준 해당 epf 파일을 선택 



이클립스에서도 이쁘게 코딩이 가능하다 ㅎㅎ

'기타' 카테고리의 다른 글

이클립스 파이썬 테마 변경  (0) 2018.10.13
블로그 이미지

알파세

와...진짜 문제를 잘읽어야한다

그냥 덱을 생각하고 짯는데 알고보니까 뒤로 뺴는게 안되더라

전체적으로 문제를 이해하는데 시간도 오래걸렸다...


오늘 문제를 제대로 이해하고 다시해보니...

20분만에 풀어버렸다...


...문제는 다음과같다


예를 들어 

7 4 

4 6 7 5

라고 하면 


1 2 3 4 5 6 7 이라는 큐에서 4 6 7 5숫자를 찾으면된다 .

숫자위치라는데 해당 숫자를  찾는거다...이거때문에도 한참 해맷다..


한번 해보자면


1 2 3 4 5 6 7  중 4 앞에 3개, 뒤에도 3개가 있다 이럴 경우는 앞에서 부터 뒤로 보낸뒤 poll 하면된다.  3번이 카운트 된다 ans = 3   

5 6 7 1 2 3  중 6을 뽑으면 된다  6앞에는 1개 뒤에는 4개가 있다

볼것도 없이 앞에 것을 뒤로 밀고 poll하면 된다 1번이 카운트 된다 ans = 4

7 1 2 3 5 은 큐 앞에 있으므로 바로 뽑는다  0번이 카운트 돤다 ans = 4

1 2 3 5 중 5를 뽑으면 된다 앞에 것이 많으므로  뒤에것을 앞으로 밀고 뽑으면 된다 1번이 카운트 된다 ans =5 


이런 식으로 차근차근 하면 순식간에 풀리는...그런 문제였다..

이번엔 함수를 좀 많이 써봤는데

함수가 주어진 역할만 딱! 수행하도록 만들어 봤다.

조금 비효율적이지만 나중에 디버깅하기엔 괜찮은거같은데...



import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.Iterator;
import java.util.Scanner;

public class backjoon_1021_큐 {
	static Deque q = new ArrayDeque();
	static ArrayList arr = new ArrayList();
	static int n ;
	static int m ;
	static int number_2 = 0;
	static int number_3 = 0; 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		m = sc.nextInt();
		/* input */
		for (int i = 0 ; i < m; i++) {
			int value = sc.nextInt();
			arr.add(value);
		}
		for(int i =1; i <= n; i++) {
			//System.out.println(i);
			q.add(i);	
		}
		//System.out.print("맨처음");
		//printQueue();
		for ( int i = 0 ; i < arr.size(); i++) {
			 //System.out.println("-------------");
			 //System.out.println("찾아야할  data" + arr.get(i));
			 int findIdx = find ( arr.get(i)); 
			 //System.out.println("findIdx = " + findIdx);
			 int judgeValue = judge(findIdx); // judge value return 
			 //System.out.println("judgeValue = " + judgeValue);
			 q_Remake(judgeValue,findIdx);
			 //printQueue();
			 //System.out.println("-------------");
			
		}
		System.out.println(number_2 + number_3);
		
		
		
	}
	public static void printQueue() {
		Iterator e = q.iterator();
	       while(e.hasNext()){
			int val =(e.next());
			System.out.print(val + " ");
		}
	       System.out.println();
	}
	
	public static void q_Remake(int judgeValue, int findIdx) {
		/* 앞이 더 많은 경우 */
		if( judgeValue == 0 ) {
			int loopCNT = ( q.size() - findIdx ) + 1 ; //자기자신까지 넘겨야함으로
			number_2 += loopCNT;
			//System.out.println("JUDGE = 0 loopCNT "+ loopCNT);
			for(int i =0; i < loopCNT; i++ ) {
				int qpl = q.pollLast();
				q.push(qpl);
			}
			q.poll();
			
		}
		/* 뒤가  더 많은 경우 */
		if( judgeValue == 1 ) {
			int loopCNT = findIdx - 1;
			number_3 += loopCNT;
			//System.out.println("JUDGE = 1 loopCNT "+ loopCNT);
			for(int i =0; i < loopCNT; i++ ) {
				int qpf = q.pollFirst();
				q.add(qpf);
			}
			//앞에꺼 빼기 
			q.poll();
		}
		//같은 경우
		if ( judgeValue == 2 ) {
			q.poll();
		}
		// 앞이랑 뒤가 같은 경우 
		if( judgeValue == 3 ) {
			int loopCNT = findIdx - 1;
			number_3 += loopCNT;
			//System.out.println("JUDGE = 1 loopCNT "+ loopCNT);
			for(int i =0; i < loopCNT; i++ ) {
				int qpf = q.pollFirst();
				q.add(qpf);
			}
			//앞에꺼 빼기 
			q.poll();
		}
		
		
		
	}
	/* 앞이 크면 0, 뒤가 크면  1 return  */
	public static int judge(int idx) {
		//바로 앞이면 
		if( idx == 1) {
			return 2;
		}
		
		int front = idx -1 ; // 앞에거 개수 
		int back =  q.size() - (idx); //뒤에꺼 개수 
		
		if ( front > back) {
			return 0;
		}
		else if ( front < back) {
			return 1;
		}
		//같은 경우 
		return 3;
		
	}
	// 찾고자 하는 값 인덱스 리턴 
	public static int find(int value) {
		Iterator e = q.iterator();
		int idx = 1;
	       while(e.hasNext()){
			int val =(e.next());
			//System.out.print("pop value " +val + " ");
			if ( val == value ) {
				return idx;
			}
			idx++;
		}
		return 0;
	}
}


'코딩' 카테고리의 다른 글

[백준][자바][1021]회전하는 큐  (0) 2018.10.11
[백준][자바][2146 다리] 해결못함  (0) 2018.10.07
[백준][자바][5427 불]  (0) 2018.10.07
[백준][자바][1063]킹  (0) 2018.10.02
[백준][자바][14502]연구소  (0) 2018.10.01
[백준][3055][자바] 탈출  (0) 2018.09.30
블로그 이미지

알파세

ㅠㅠ..

또 해결못했다 접근 방법은 맞는거 같은데 뭐가 문젠지 찾지못했다...

잠시 쉬었다해야곘다...너무 힘ㅁ들다....

package aa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
class b_Point{
	int x; 
	int y;
	b_Point(int y, int x){
		this.x = x;
		this.y = y; 
	}
}
public class backjoon_2146_다리 {
	static int[][] map = new int [101][101];
	static int[][] island = new int [101][101];
	static int[][] temp = new int [101][101];
	static boolean[][] visited = new boolean[101][101];
	static int n;
	static int[] dx = {0,0,-1,1}; 
	static int[] dy = {-1,1,0,0}; 
	static int low = 100;
	static int bridgeCnt = 0;
	static Queue bq = new LinkedList();
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		
		StringTokenizer st;
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			int idx = 0;
			while(st.hasMoreTokens()) {
				map[i][idx] = Integer.parseInt(st.nextToken());
				idx++;
			}
		}
		
		/*섬마다 번호 매기기 */
		int islandName = 1;
		for(int i =0 ; i < n; i++) {
			for (int j = 0; j < n; j++ ) {
				if(!visited[i][j] && map[i][j] == 1) {
					find_Island(i,j,islandName);
					islandName++;
				}
			}
		}
		//한번썻으니 초기화 
		visited = new boolean[101][101];
		printMap();
		
		//island 마다 bfs 돌리자 
		for (int islandNum = 1; islandNum < islandName; islandNum++) {
			
			//맨 처음 엣지 찾고 큐에 넣기
			for(int i =0 ; i < n; i++) {
				for (int j = 0; j < n; j++ ) {
					if(island[i][j] == islandNum) {
						if(isEdge(i,j)) {
							//System.out.println(i+ " "+ j);
							bq.add(new b_Point(i, j));
						}
					}
				}
			}
			//섬마다 다리 건설 
			while(true) {
				if ( buliding_Bridge(islandNum)) {
					break;
				}
				//printMap();
			
			}
			//초기화 
			restore();	
		}
	
		System.out.println(low - 1 );
		//printMap();
	}
	/* 초기화 하기 */
	public static void restore() {
		//island 초기화
		for(int i =0 ; i < n; i++) {
			for (int j = 0; j < n; j++ ) {
				island[i][j] = temp[i][j];
			}
		}
		//비짓 배열 초기화
		visited = new boolean[101][101];
		bq = new LinkedList();
		bridgeCnt = 0;
	}

	
	/* 제일 끝단 찾기 */
	public static boolean isEdge(int sero, int garo) {
		for(int i = 0; i < 4; i++) {
			int xx = dx[i] + garo;
			int yy = dy[i] + sero;
			if(xx >= 0 && xx < n && yy >= 0 && yy < n) {
				if(island[yy][xx] == 0 ) {
					return true;
				}
			}
		}
		return false;
	}
	
	/*최저점 찾기 */
	public static void find_lowest(int value) {
		if(low > value) {
			low = value;
		}
	}
	
	
	/* 섬마다 bfs로 돌리기  */
	public static boolean buliding_Bridge(int islandNum) {
		bridgeCnt += 1;
		//System.out.println("buliding");
		int bqSize = bq.size();
		for(int size = 0; size < bqSize; size++ ) {
				b_Point b = bq.poll();
				int garo = b.x;
				int sero = b.y;
				for(int i = 0; i < 4; i++) {
					int xx = dx[i] + garo;
					int yy = dy[i] + sero;
					if(xx >= 0 && xx < n && yy >= 0 && yy < n) {
						//방문 안했고 내 섬번호가 아니고,
						if(!visited[yy][xx] && island[yy][xx] != islandNum) {
							 //0이 아니라면( 섬인경우 )
							 if(island[yy][xx] != 0 ) {
								//System.out.println(yy+ "  " + xx);
								find_lowest(bridgeCnt);
								return true;
							}
							else {
								island[yy][xx] = islandNum;
								visited[yy][xx] = true;
								bq.add(new b_Point(yy,xx));
							}
						}
					}
				}
			
		}
		return false;
	}
	/*dfs로 각 섬의 번호 매기기  */
	public static void find_Island(int sero, int garo, int name) {
		visited[sero][garo] = true;
		island[sero][garo] = name;
		temp[sero][garo] = name;
 		for(int i = 0; i < 4; i++) {
			int xx = dx[i] + garo;
			int yy = dy[i] + sero;
			if(xx >=0 && xx < n && yy >= 0 && yy < n) {
				if(!visited[yy][xx] && map[yy][xx] == 1) { 
					visited[yy][xx] = true;
					island[yy][xx] = name;
					temp[yy][xx] = name;
					find_Island(yy,xx,name);
				}
			}
		}
		
	}
	public static void printMap() {
		System.out.println("----");
		for (int i = 0 ; i < n; i++) {
			for(int j = 0; j< n; j++) {
				System.out.print(island[i][j] + " ");
			}
			System.out.println();
		}
		//System.out.println(mwh.Sangun_Point.x);
		//System.out.println(mwh.Sangun_Point.y);
		System.out.println("----");
	}
	
}


'코딩' 카테고리의 다른 글

[백준][자바][1021]회전하는 큐  (0) 2018.10.11
[백준][자바][2146 다리] 해결못함  (0) 2018.10.07
[백준][자바][5427 불]  (0) 2018.10.07
[백준][자바][1063]킹  (0) 2018.10.02
[백준][자바][14502]연구소  (0) 2018.10.01
[백준][3055][자바] 탈출  (0) 2018.09.30
블로그 이미지

알파세