no image
[보안 이슈] 수익금을 기부하는 해커 집단, 다크사이드
지난 5월 7일, 미국 동부 지역 주요 송유관 운영 업체인 '콜로니얼 파이프라인(Colonial Pipeline)'이 랜섬웨어 공격을 받아 운영을 멈췄다. 콜로니얼 파이프라인은 무려 8,850km의 송유관을 운영하며 미국 동부 지역에 필요한 연료의 약 45%를 담당하는 회사이다. 휘발유와 경유 등 산업과 가정용 연료 공급은 물론이고 항공유 공급에도 중추적인 역할을 하고 있어 본 사태의 피해가 막심할 것으로 보인다. 이에 미국 교통부는 텍사스·뉴욕 등 17개 주와 워싱턴 D.C 등 18개 행정구역에 비상사태까지 선언했다. 이번 공격에 사용된 '랜섬웨어(ransomware)'는 악성코드의 일종으로 '랜섬(ransom)'은 납치나 유괴를 저지른 뒤 풀어주는 대가로 요구하는 ‘몸값’을 말한다. 랜섬웨어는 주로 ..
2021.05.17
no image
[AI 이슈] 링컨·에디슨, 현대 카메라로 재촬영하다
인공지능 기술의 발전에 따라 사진복원 기술도 나날이 발전하고 있다. 인공지능 기술을 이용해 흑백 사진을 컬러 사진으로 변환하는 기술은 여러 전문가들에 의해 이미 많은 시도를 거쳐 웹사이트로 상용화 되어 누구나 변환하고 싶은 이미지를 해당 사이트에 업로드하면 흑백 이미지를 컬러 이미지로 변환하여 돌려준다. 위의 사이트(https://demos.algorithmia.com/colorize-photos)는 Richard Zhang(UC Berkeley Ph.D.)이 만든 ALGORITHMIA의 Colorize Photos 라는 웹서비스이다. 그런데 이러한 채색기술에도 한계점이 있었는데, 바로 과장된 주름, 플라스틱처럼 보이는 피부 표현과 같이 과거에 촬영된 이미지들의 경우 채색만으로 초고해상도로 재구현하는 건..
2021.05.17
no image
[알고리즘 일기] 16. 퀵 정렬(3)
퀵 정렬(3) 이전에 작성한 quicksort 함수를 파라미터 하나만을 이용해서 작성하시오. ❧ Before # Test test_list = [9, 5, 1, 5, 2, 8, 2, 7, 1, 3, 6, 2, 4, 7, 10, 11, 4, 6] quicksort(test_list, 0, len(test_list) - 1) print(test_list) ❧ After # Test test_list = [9, 5, 1, 5, 2, 8, 2, 7, 1, 3, 6, 2, 4, 7, 10, 11, 4, 6] quicksort(test_list) # start, end 파라미터 없이 호출 print(test_list) ❧ 정답 def swap_elements(my_list, index1, index2): tmp =..
2021.05.16
no image
[Java] 9. 추상 메소드와 추상 클래스
추상 메소드(abstract method) abstract 키워드를 사용해서 선언 선언되어 있으나 구현되어 있지 않은 메소드 형태만 있는 메소드! 서브 클래스에서 오버라이딩하여 구현해야함 추상 클래스(abstract class) abstract class Shape { public Shape() { } public void paint() { draw(); } abstract public void draw(); } abstract class MyComponent { String name; public void load(String name) { this.name = name; } } 추상 메소드를 하나라도 가진 클래스 추상 메소드가 하나도 없지만 abstract 로 선언된 클래스 🌟 추상 클래스는 객체를 ..
2021.05.16
no image
[Java] 8. 메소드 오버라이딩
메소드 오버라이딩(Method Overriding) 슈퍼 클래스의 메소드를 서브 클래스에서 재정의 슈퍼 클래스 메소드 명, 매개변수 타입 및 개수, 리턴 타입, 접근 지정자 등 모든 것을 동일하게 작성 (= 메소드 무시하기, 덮어쓰기) 서브 클래스에 오버라이딩된 메소드가 무조건 실행되는 것동적 바인딩 발생 └ 내/외부에서 메소드2()의 호출이 발생해도 무조건 서브 클래스의 메소드2()가 호출된다. └ draw() 메소드의 오버라이딩 사례 오버라이딩 조건 부모 클래스의 메소드와 메소드 명, 매개변수 타입 및 개수, 리턴 타입, 접근 지정자 등의 시그니처가 모두 동일해야 함 접근 제한을 더 좁게 수정 불가 _public_이나 _default_나 _private_로 수정 불가 추가적인 예외 (Exception..
2021.05.16
no image
[알고리즘 일기] 15. 퀵 정렬(2)
퀵 정렬(2) Divide and Conquer 방식으로 quicksort 함수를 써 보세요. quicksort는 파라미터로 리스트 하나와 리스트 내에서 정렬시킬 범위를 나타내는 인덱스 start와 인덱스 end를 받습니다. merge_sort 함수와 달리 quicksort 함수는 정렬된 새로운 리스트를 리턴하는 게 아니라, 파라미터로 받는 리스트 자체를 정렬시키는 것입니다. ❧ 테스트 셋 def swap_elements(my_list, index1, index2): tmp = my_list[index1] my_list[index1] = my_list[index2] my_list[index2] = tmp return my_list # partition fuction def partition(my_list..
2021.05.15
no image
[알고리즘 일기] 14. 퀵 정렬(1)
퀵 정렬(1) 퀵 정렬의 partition 함수를 작성하세요. partition 함수는 리스트 my_list, 그리고 partition할 범위를 나타내는 인덱스 start와 인덱스 end를 파라미터로 받습니다. my_list의 값들을 pivot 기준으로 재배치한 후, pivot의 최종 위치 인덱스를 리턴해야 합니다. ❧ 테스트 셋 # helper function def swap_elements(my_list, index1, index2): tmp = my_list[index1] my_list[index1] = my_list[index2] my_list[index2] = tmp return my_list # partition function def partition(my_list, start, end): ..
2021.05.15
no image
[C 이론] 9. 함수와 변수
변수(variable) : 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간 변수의 속성 : 이름, 타입, 크기, 값 + 범위, 생존 시간, 연결 범위(scope) : 변수가 사용 가능한 범위_가시성 생존 시간(lifetime) : 메모리에 존재하는 시간 연결(linkage) : 다른 연역에 있는 변수와의 연결 상태 💡 변수는 사용하는 위치와 가까운 곳에서 선언하는 것이 좋다. 지역 변수(Local Variable) : 블록 안에 선언되는 변수 int sub(void) { int x = 0; while(flag != 0){ int y; ... } // 지역 변수 y가 사용가능한 범위 : 블록 내 y = 0; // Error) y가 선언된 블록을 벗어나서 사용 ... } // 지역 변수 ..
2021.05.13
no image
[알고리즘 일기] 13. 합병 정렬(2)
합병 정렬 구현하기 Divide and Conquer 방식으로 merge_sort 함수를 써 보세요. merge_sort는 파라미터로 리스트 하나를 받고, 정렬된 새로운 리스트를 리턴합니다. ❧ 테스트 셋 def merge(list1, list2): merge_list = [] i = 0 j = 0 while i < len(list1) and j < len(list2): if(list1[i] < list2[j]): merge_list.append(list1[i]) i+=1 else: merge_list.append(list2[j]) j+=1 if (i == len(list1)): return merge_list + list2[j:] else: return merge_list + list1[i:] retu..
2021.05.13