본문 바로가기

전체 글

어떻게 해야 null을 입력하면 루프가 종료 될까 문자열 배열에 데이터를 입력후 enter를 입력하면 종료. 그리고 입력한 데이터 만큼의 배열 길이를 출력하는 코드에 대해서 생각해 봤다. 동적 배열이나 거창한 자료구조를 사용한 것이 아닌 문자열 관련 메서드 + 배열 복사를 사용하여 작성해보았다. public static void main(String[] args) { final int LENGTH = 10;//배열의 길이 임의로 선언 Scanner kb = new Scanner(System.in); String[] strArr = new String[LENGTH]; int count = 0;//새로 생성할 배열의 길이 초기화 //배열의 길이만큼 + 다음에 읽을 값이 있는지(hasNextLine() == true) 검사 for (int i = 0; i <.. 더보기
최대값 구하기 n개의 정수를 입력받아 배열 요소에 저장했을 때, 0 이상의 연속된 정수들의 합 중에서 최댓값을 구하려면 어떻게 해야 할까? -2 1 5 예를 들어서 이러한 배열이 존재한다고 가정할 때, 연속된 정수들의 합을 구하면 1) -2 + 1 + 5 = 5 2) 1 + 5 = 6 두 가지 경우의 수를 가지며, 최댓값은 6이라고 할 수 있다. 1번의 경우는 배열의 0번 인덱스부터 2번 인덱스까지 차례로 더한 것이고 2번의 경우는 배열의 1번 인덱스부터, 2번 인덱스까지 차례로 더한 것이다. 이를 간단히 의사 코드로 나타내면 max is zero for i = 0 to n-2 sum is zero for j = i+1 to n-1 sum += data[j] if sum > max then max = sum 정도로 나.. 더보기
소수 출력 사용자에게 입력받은 int형 정수 N까지의 모든 소수를 출력해보자. 소수(Prime Number)란 1보다 큰 수 자연 중에 1과 자기 자신만을 약수로 가지는 수이다. 대충 나열해보면 2, 3, 5, 7, 11, 13, 17, 19,............이다. N = 100이라면 어떻게든 찾아낼 수 있겠지만, N = 100000이라면 여간 힘든 일이 아닐 것이다. 어떻게 하면 소수를 가려낼 수 있을까? 처음에 생각한 방법은 이랬다. 1. 10 이하에서는 2, 3, 5, 7만 출력한다. 왜냐하면 10 이하에서는 2, 3, 5, 7만 소수이므로. 2. 10 이상부터는 2, 3, 5, 7로 나누어 떨어지는 수를 제외하고 출력한다. 왜냐하면 10 이상에서는 2, 3, 5, 7로 나누어 떨어지지 않는 수가 소수이.. 더보기
배열요소 한 칸씩 뒤로 밀기 크기가 6인 정수형 배열 data가 있다고 하자. 2 3 5 8 13 21 data배열이 위와 같다고 생각하고, 각 요소를 한 칸씩 오른쪽으로 이동시킨다면 21 2 3 5 8 13 이런 모습이 될 것이다. 굉장히 간단한 문제지만, 조금만 생각해보면 당황스러운 부분이 존재하는데 '어떻게 배열 요소를 옮길 것인가?'라는 부분이다. 예를 들어 data [0]을 무턱대고 data [1]로 덮어 씌운다면, 원래의 요소 data [1]은 그냥 없어진다. 즉, 이 문제를 해결하기 위해선 원래의 요소를 보관할 임시 보관장소(이하 임시 변수)가 필요하다는 사실을 알게 된다. 그런데 각 요소를 옮길 때마다 임시 변수를 사용하는 것은 매우 번거로운 문제일 것이다. 어떻게 해야 최대한 효율적으로 옮길 수 있을까? 아니 그전에.. 더보기
Teachable Machine을 활용한 웹페이지만들기 URL: aishindan-sakakb.netlify.app/ 나와 인연인 사카미치AKB 멤버 찾기 나와 인연인 사카미치AKB멤버를 찾아보세요! 인기멤버들의 사진 데이터를 학습한 인공지능이 당신과 인연인 멤버들을 찾아줍니다. aishindan-sakakb.netlify.app 개요 구글의 Teachable Machine으로 사카미치 그룹(노기자카46, 사쿠라자카46, 히나타자카46)과 AKB48 멤버들중, 졸업자 포함, 멤버 43명의 얼굴 데이터셋을 학습시킨 후, 그 결과를 웹페이지 형식으로 출력하는 작업을 해봤다. 멤버 얼굴 데이터셋은 각각 300장으로 해서 학습을 진행했다. 웹페이지는 HTML/CSS를 사용해서 만들었고 JavaScript, JQuery 요소도 포함되어있다. 원래는 학습시킨 데이터와 .. 더보기
Selenium을 사용한 구글 이미지 크롤링 사용언어 및 외부 라이브러리: 파이썬 3.9, Selenium, Chromedriver 사용방법: 검색하고자 하는 단어를 입력하면 그 단어 이름의 폴더가 생성되고, 폴더 안에 사진파일이 150개까지 저장된다. 이후 프로그램은 자동 종료. venv를 사용했기 때문에 버전이 안 맞아서 꼬일 수도 있으므로 가상환경 구축해서 사용하길 권장. 덕질용 짤 모을 때 유용하게 쓰일듯 UI구현 + EXE 파일 생성이 최종목표 간단하게 코드 설명을 하자면 크롬 드라이버를 실행 후 기본 주소는 구글 이미지로 설정한다. 그리고 터미널에서 검색하고자 하는 키워드를 입력한다. 그럼 키워드가 search라는 변수에 저장되고 검색이 시작된다. 스크롤을 넘기기 위해 스크롤 길이를 구해준다. 왜냐하면 스크롤을 넘기다 보면 결과 더보기 .. 더보기
운영체제 정리 3 Chapter 2 System Structure(2) - I/O Device Controller - I/O 디바이스를 통해 데이터를 읽거나 쓰며, Local Buffer에 데이터를 저장 CPU에 무언가를 알릴 때 Interrupt를 건다. - CPU - CPU는 매순간 메모리에 올라온 기계어를 처리한다(메모리에 프로그램 카운터라는 레지스터가 가리키는 인스트럭션을 처리) 하나의 인스트럭션을 처리하면 인터럽트를 확인하고 인터럽트가 들어왔다면, CPU 제어권이 OS에게 넘어간다. 이 때 Mode Bit은 0이 된다. 평소 CPU 제어권은 사용자 프로그램이 갖고 있으며, Mode Bit은 1이다. 사용자 프로그램이 무언가를 요청(커널 함수 호출) 할 때는 System Call 을 통하여 요청한다. - 동기식 입.. 더보기
운영체제 정리 2 Chapter 2 System Structure(1) - Mode bit - 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 보호 장치가 필요하다. Mode bit을 통해 하드웨어적으로 두 가지 모드의 Operation을 지원한다. 사용자 모드 (1): 사용자 프로그램 수행 모니터 모드 (0): OS 코드 수행 (모니터 모드 = 커널 모드 = 시스템 모드) * 보안을 위협할 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '특권명령'으로 규정 * Interrupt나 Exception 발생시, 하드웨어가 Mode bit을 0으로 바꾼다 * 사용자에게 CPU를 넘기기 전, Mode bit을 1로 설정한다 - Timer - *정해진 시간이 흐른 뒤 운영체제에게 제어권이.. 더보기