본문 바로가기

전체 글79

[백준] BOJ 1316 그룹 단어 체커(자바) 오늘은 문자열 관련 문제를 풀어보았습니다. 문제를 풀면서 연속적으로 나오는 그룹 단어를 처리하는 방법에 대해 바로 해결 방법이 나오지 않아 이 부분에서 시간이 걸린 것 같습니다. aaabbbccb 다음을 예시로 들어 저의 풀이 방법을 설명하겠습니다. 일단 저는 각 문자에 대해 카운팅을 해주어야겠다고 생각했습니다. 저는 이때 Map을 이용하였습니다. map에 똑같은 문자가 없는 경우에 문자를 담아주었습니다. 만약 이미 똑같은 문자가 있다면 그룹 단어가 아니라고 판단하여 boolean 체크 변수를 true로 두고 break 하였습니다. 예시와 같이 aaa처럼 연속적인 문자를 처리하기 위해 연속적으로 나오는 문자 끝까지 for문을 진행합니다. 또한, 다음 탐색은 aaa 다음인 b부터 시작하기 위해 인덱스(j).. 2023. 1. 2.
[백준]BOJ 1012 유기농 배추(자바/BFS/메모리 초과) 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 되므로 서로 인접해있는 배추들이 몇 군데에 퍼져있는지 조사하면 총 몇 마리의 지렁이가 필요한지 알 수 있다. 위의 문제 조건을 처음 보았을때 BFS로 풀 수 있겠다고 생각했습니다. 서로 인접해있는 배추 그룹이 몇 그룹이 존재하는지를 알게되면 그건 곧 지렁이 개수를 구하는 것과 다름이 없다고 생각했습니다. 아래 그림과 같이 인접한 배추들을 그룹으로 묶어보면 총 5그룹이 나오는 것을 확인해볼 수 있었습니다. 저는 BFS로 탐색을 수행하며 인접한 배추들에 대해 방문처리를 진행했습니다. 그러나, 메모리 초과라는 문제가 발생했습니다. 결론부터 말씀드리자면 메모리 초과의 원인은 바로 방문처리 문제였습니다!!! 항상 습관처럼 방문체크는 큐에서 pop한뒤 수행했.. 2022. 12. 31.
[OS] 프로세스 및 스레드 프로세스 프로세스 : 컴퓨터에서 실행되고 있는 프로그램 1. 프로그램으로부터 인스턴스화된 것을 말합니다. 2. CPU에서 실행하기 위해 메모리에 로드한 프로그램입니다. 특히, 하나의 프로세스는 여러 스레드를 가질 수 있습니다.(멀티 스레드) 프로세스를 확인하는 명령어(리눅스) ps aux 프로세스 상태 생성 프로세스가 생성된 상태를 의미한다. 이때 PCB가 할당된다. 대기 상태(ready) 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하고 있으며 CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태이다. 실행 상태(Running) CPU 소유권과 메모리를 할당받고 instruction을 수행 중인 상태를 의미한다. 중단 상태(blocked) 어떤 이벤트가 발생한 이후 기다리며.. 2022. 12. 29.
[DB] 조인(join) 오늘은 DB 조인에 대해 알아보겠습니다. 조인 : 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것 조인을 사용하는 이유는? 정규화와 관련있습니다. 정규화는 이상이 있는 관계를 분해하여 이상현상을 없애는 과정입니다. 이러한 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서 하나의 테이블로 합쳐야 합니다. 이때, 조인이 사용됩니다. 조인의 종류 1. INNER JOIN INNER Join은 왼쪽 테이블 A와 오른쪽 테이블 B의 두 행이 모두 일치하는 행이 있는 부분만 표기합니다. 즉, 두 테이블 간에 교집합을 나타냅니다. SELECT * FROM TableA A INNER JOIN TableB B ON A.key=B.key INNER Join은 다음과 같이 벤 다이.. 2022. 12. 23.