728x90

생각보다 쉽게 풀었다. 함수에서 굳이 return 을 하지 않아도 되는 경우를 구별하는 게 중요한 것 같다.2차원 리스트 초기화 부분을 명확히 해야겠다.

 
import sys
from collections import deque
 
def bfs(a,b,N,M):
 
    dx = [0,0,1,-1]
    dy = [1,-1,0,0]
 
    queue = deque()
 
    queue.append([a,b])
 
    while queue:
 
        x,y = queue.popleft()
 
        for i in range(4):
            temp_x = x + dx[i]
            temp_y = y + dy[i]
 
            if visited[temp_x][temp_y] == False:
                if 0<=temp_x<N and 0<=temp_y<M and k[temp_x][temp_y]!=0:
 
                    k[temp_x][temp_y] = k[x][y] + 1
                    visited[temp_x][temp_y] = True
 
                    queue.append([temp_x,temp_y])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
N,M = list(map(int,sys.stdin.readline().split(" ")))
 
k = [ ]
 
for i in range(N):
    k.append(list(map(int,list(sys.stdin.readline().rstrip()))))
 
visited = [[False]*(M+1) for i in range(N+1)]
 
for i in range(0,len(k)):
    for j in range(0,len(k[i])):
 
        if visited[i][j] == False and k[i][j] !=0:
            bfs(i,j,N,M)
 
 
print(k[-1][-1])
 
728x90
728x90

두 달전에 못풀던 걸 풀었다.

import sys
from collections import deque
 
# bfs 로 탐색 하기
 
def bfs(k,q,w):
 
    count = 1
 
    dx = [1,-1,0,0]
    dy = [0,0,1,-1]
 
    width = len(k)
 
    queue = deque()
    queue.append([q,w])
 
    k[q][w] = 0
 
    while queue:        
 
        a,b = queue.popleft()        
 
        for i in range(4):
            temp_x = dx[i] + a
            temp_y = dy[i] + b
 
            if 0<=temp_x<width and 0<=temp_y<width and k[temp_x][temp_y] == 1:
 
                k[temp_x][temp_y] = 0                
                queue.append([temp_x,temp_y])                
 
                count+=1
 
 
    return count
 
 
 
 
k = [ ]
 
num = int(input())
 
for i in range(num):
    k.append(list(map(int,list(input()))))
 
answer = [ ]
 
for i in range(0,len(k)):
 
    for j in range(0,len(k)):
 
        if k[i][j] == 1:
 
            answer.append(bfs(k,i,j))
 
 
print(len(answer))
 
 
answer = list(sorted(answer))
for i in answer:
    print(i)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728x90
728x90

Collection : 데이터의 집합, 그룹

 

Collection

List

 - LinkedList : 각 원소마다 앞,뒤 원소의 위치값을 가지고 있다. 삽입/삭제 시에 유리함.

 - Stack

 - Vector : 동기화가 된다. 한번에 하나의 스레드만 엑세스 가능함. (주로 ArrayList 사용)

 - ArrayList : index가 존재한다. 동적 할당 가능. 조회 시 유리함.

 

 Set

- HashSet 

- SortedSet

 

 

 

Map : key + value 로 구성

Hashtable : 동기화 보장

HashMap : 동기화 보장하지 않음

 

728x90

'🟢 개념 정리 > Java' 카테고리의 다른 글

Do it 자바 프로그래밍 책 정리  (0) 2023.07.04
Enum  (0) 2023.01.02
Map의 종류, 쓰레드란?  (0) 2022.08.01
자바 튜토리얼 ( ~ 완결 )  (0) 2022.05.31
자바 튜토리얼 ( 기초 ~ 오버라이딩 )  (0) 2022.05.31
728x90

AWS Elastic Load Balancing

 

- 들어오는 애플리케이션 트래픽을 여러 대상에 자동으로 분산시킴

- Scale Out : 수평 확장 ex) 로드 밸런싱

- Scale Up : 수직 확장 ex) CPU, 메모리 업그레이드

 

ELB 특징 

1. 상태 체크 : 상태 체크에 통과하지 못한 인스턴스는 요청 전달 불가

2. Sticky Session : 다음에 다른 인스턴스로 접근하더라도 세션 유지 가능

3. 고가용성 구성 : 트래픽을 자동으로 분산할 수 있음

4, 보안 기능 : SSL Termination 기능을 통해 사설 인증서를 등록 -> 암호화 및 복호화 서비스 제공

 

 

 

ELB 종류

 

1. 어플리케이션 로드 밸런서 : HTTP/HTTPS 사용하는 서비스에 적합함

2. 네트워크 로드 밸런서 : TCP 트래픽의 로드 밸런싱에 적합함

3. 클래식 로드 밸런서 : Transport + Network 에서 작동함

 

 

728x90

'🟢 개념 정리 > Infra' 카테고리의 다른 글

로드 밸런싱  (0) 2023.06.20
쿠버네티스란?  (0) 2023.03.22
728x90

- NCSA HTTPd 를 대체하기 위해 발명됌

- 요청이 들어오면 connection을 생성함

- 이를 위에 preFORK 방식 사용

 

but connection 이 늘어남에 따라 새로운 connection 생성 불가

 

- 메모리 부족

- 무거운 프로그램

- CPU 부하 증가

728x90

'🟢 개념 정리 > Server' 카테고리의 다른 글

서버 테스트 종류  (0) 2023.06.20
nGrinder란?  (0) 2023.06.20
Jmeter란?  (0) 2023.06.20
728x90

개념

- 서버에 가해지는 부하를 분산해주는 장치 및 기술

- 클라이언트와 서퍼풀 사이에 위치

- Scale-out 경우에 필요

 

 

 

L4 로드 밸런싱

 

- 전송 계층에서 로드 분산

- IP주소, 포트번호, MAC 주소 등에 따라 트래픽을 나누고 분산 처리 가능

- TCP/UDP 포트 정보를 바탕으로 진행

- 빠르고 효율이 좋으며 안전하다 + 저렴하다

- 사용자의 IP가 수시로 바뀌는 경우 서비스 제공이 어렵다

 

 

 

L7 로드 밸런싱

 

- 애플리케이션 계층에서 로드를 분산

- OSI 7계층의 프로토콜(HTTP, SMTP, FTP 등)을 바탕으로도 분산 처리가 가능

- 캐싱 기능 제공

- 상세한 라우팅이 가능

- 비정상 트래픽 사전에 필터링 가능

728x90

'🟢 개념 정리 > Infra' 카테고리의 다른 글

AWS ELB  (0) 2023.06.25
쿠버네티스란?  (0) 2023.03.22
728x90

부하 테스트

- 특정한 부하를 제한된 시간에 두기

 

지속성 테스트

- 오랜 기간 부하를 주기

 

 

스트레스 테스트

- 부하의 임계점을 찾고, 점진적으로 부하 올리기

 

최고 부하 테스트

- 감당할 수 없을 만큼의 부하를 주기

728x90

'🟢 개념 정리 > Server' 카테고리의 다른 글

Apache Server  (0) 2023.06.20
nGrinder란?  (0) 2023.06.20
Jmeter란?  (0) 2023.06.20
728x90

특징

- 네이버에서 개발한 오픈소스 프로젝트

- 사용자 정의 라이브러리로 테스트 무제한 확장 가능

- 보고서 관리를 위한 웹 기반 인터페이스 제공

- 거대한 시스템 테스트 사용 가능

 

 

 

한계

 

- agent, controller 실행 따로 해야 함

- 톰켓이 필요함

728x90

'🟢 개념 정리 > Server' 카테고리의 다른 글

Apache Server  (0) 2023.06.20
서버 테스트 종류  (0) 2023.06.20
Jmeter란?  (0) 2023.06.20

+ Recent posts