[Python] 파이썬 지뢰찾기 구현 (2차원 리스트)
·
Python
파이썬 코딩도장 23.7 심사문제 지뢰찾기 구현 * 문제설명 표준 입력으로 2차원 리스트의 가로(col)와 세로(row)가 입력되고 그 다음 줄부터 리스트의 요소로 들어갈 문자가 입력됩니다. 이때 2차원 리스트 안에서 *는 지뢰이고 .은 지뢰가 아닙니다. 지뢰가 아닌 요소에는 인접한 지뢰의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 여러 줄을 입력 받으려면 다음과 같이 for 반복문에서 input을 호출한 뒤 append로 각 줄을 추가하면 됩니다(list 안에 문자열을 넣으면 문자열이 문자 리스트로 변환됩니다). 2차원 배열을 이용해서 배열의 범위를 벗어나지 않도록 잘 조건을 줘서 8방향을 탐색하면 되는 문제다. row, col = map(int,inpu..
[Python] 로또 당첨번호 (별찍기 예제)
·
Python
로또 당첨번호를 별찍기를 활용해 출력한다. import random win_number = random.sample(range(1,46),7) def first(arr): print("====1등 당첨번호====") print(arr[0:6]) def second(arr): print("====2등 당첨번호====") for i in range(0,len(arr)-1): for j in range(0, len(arr)): if(i==j): print('*', end=' ') else: print(arr[j], end=' ') print() def third(arr): print("====3등 당첨번호====") for i in range(0,len(arr)-1): for j in range(0, len(..
[Python] 파이썬 별찍기 for, while문
·
Python
1. 사각형 #for문 for i in range(3) : for j in range(4): print('*', end ='') print() #while문 i, j = 0, 0 while i
[Python] 파이썬 리스트, 튜플, 딕셔너리 사용법
·
Python
리스트 [ ] : 말 그대로 목록 이라는 뜻으로 값을 일렬로 늘어놓은 형태다. 튜플 ( ) : 리스트와 비슷하지만 저장된 요소를 변경, 추가, 삭제가 불가능하다. 딕셔너리 { } : 키 : 값의 형식을 가지고 있다. 연관된 값을 묶어서 저장하는 자료형이다. 1. 리스트 ( list ) 리스트는 문자열, 실수, 정수, 불 등 모든 자료형을 저장할 수 있다. 대괄호 [ ]를 사용하여 선언한다. a = [10, 'superman', True] 1. 주요 메서드 메서드명 기능 예시 append(요소) 요소 하나를 추가 list.append(10) extends(리스트) 리스트를 연결하여 확장 list.extend( [30,40] ) insert(인덱스, 요소) 특정 인덱스에 요소 추가 list.insert(2,..
[Java] 자바 두 개의 큐(Queue)로 스택(Stack) 구현하기
·
Java/자바 이론
https://hyunki99.tistory.com/26 이전 글과 비슷하게 2개의 큐로도 스택을 구현할 수 있다. 큐는 많이 사용되는 자료구조 중 하나이다. 먼저 들어온 것이 먼저 나오는 구조로서 FIFO (First In First Out)의 형태를 띈다. 2개의 큐를 활용해서 스택을구현하는 방법을 알아보자. 1. 원리 1. 메인 큐와 임시 큐를 준비한다. 2. 메인 큐에 1개의 원소가 남을 때까지 dequeue하고, 임시 큐에 넣는다. 3. 마지막 남은 1개의 원소는 result 변수에 저장한다. 4. 임시 큐에 남아있는 원소들을 다시 메인 큐로 이동시킨다. 5. result를 리턴한다. 2. 예제코드 import java.util.LinkedList; import java.util.Queue; c..
[Java] 자바 두 개의 스택(Stack)으로 큐(Queue) 구현하기
·
Java/자바 이론
스택은 많이 사용되는 자료구조 중 하나이다. 나중에 들어온 것이 먼저 나오는 구조로서 LIFO (Last In First Out)의 형태를 띈다. 2개의 스택을 활용해서 큐를 구현하는 방법을 알아보자. 1. 원리 스택을 하나 사용하면 LIFO지만, 2개의 스택을 사용해서 FIFO(First in First Out) 형태인 큐 자료구조를 구현할 수 있다. 스택과 큐에서 자료가 어떤 방식으로 들어오고(push) 나가는지(pop)만 이해하면 어렵지 않다. 스택 : 1, 2, 3을 push하고 pop하면 3, 2, 1 순으로 나오게 된다. 큐 : 1, 2, 3을 enqueue하고 dequeue하면 1, 2, 3 순으로 나오게 된다. 즉, 스택과 큐는 서로 역순(reverse)이다. 나오는 자료를 역순 뒤집어 주..
[Java] 너비우선탐색 (BFS) 미로찾기 Queue구현
·
Java/코딩테스트 연습 & 실습
너비우선탐색(BFS) 최대한 넓게 이동한 후 더 이상 갈 수 없을 경우 아래로 이동한다. 인접한 노드를 먼저 탐색하고, 가장 멀리 떨어져 있는 정점을 가장 나중에 방문한다. 최단 경로를 찾고자 할 경우 주로 사용한다. 1. map : 갈 수 있는 길은 0, 갈 수 없는 길은 1이다. 2. enqueue한 길도 벽으로 변경하여 여러번 enqueue할 수 없도록 한다. (방문 처리) 3. class Index : Queue에 담을 객체 ( x와 y의 좌표를 가지고 있다.) 4. 현재 인덱스를 저장하고 있는 Index 클래스를 매개변수로 받아 findWay() 메서드에서 상하좌우를 탐색하고 enqueue한다. 5. enqueue한 Index를 dequeue해 위치를 이동한다. 0) { if (map[x-1][..
[Java] 깊이우선탐색 (DFS) 미로찾기 스택구현
·
Java/코딩테스트 연습 & 실습
깊이우선탐색(DFS) 최대한 깊이 내려간 후 더이상 깊이 갈 곳이 없을 경우 옆으로 이동한다. 미로찾기의 경우 최대한 한방향으로 쭉 직진한다. 더 이상 길이 없으면 스택을 pop하며 길을 찾아간다. 모든 노드를 방문하고자 할 경우 주로 사용하며 검색 속도는 너비우선탐색(BFS)보다 느리다. 따라서 최단 경로를 찾고 싶다면 BFS를 사용해야 한다. 1. map : 갈 수 있는 길은 0, 갈 수 없는 길은 1이다. 2. push한 길도 벽으로 변경하여 여러번 push할 수 없도록 한다. (방문 처리) 3. class Index : Stack에 담을 객체 ( x와 y의 좌표를 가지고 있다.) 4. 현재 인덱스를 저장하고 있는 Index 클래스를 매개변수로 받아 findWay() 메서드에서 상하좌우를 탐색하고 ..