전체 글304 ‘Call by Value’와 ‘Call by Reference’에 대하여 -왕초보도 이해하는 자바 우리 오늘의 주제로 떠오른 ‘Call by Value’와 ‘Call by Reference’에 대하여 깊게 파헤쳐 보겠습니다. 이 두 가지 방법은 프로그래밍 세계에서 자주 마주치게 되는 개념입니다. 이야기의 깊은 물결에 몸을 맡기기 전, 먼저 간단한 예를 들어봅시다. 당신이 친구에게 꽃다발을 선물한다고 생각해 보세요. 이 꽃다발을 직접 주는 경우와, 꽃다발의 사진을 보내는 경우, 두 가지 상황을 상상해보시기 바랍니다. 첫 번째 상황이 ‘Call by Reference’와 유사하며, 두 번째 상황은 ‘Call by Value’와 닮아 있습니다. 자, 이제부터 저희의 여행이 시작됩니다. ‘Call by Value’는 값에 의한 호출 방식으로, 함수에 값을 넘겨줄 때 메모리상의 값을 복사하여 전달합니다. 따라.. 2023. 9. 16. Git과 Github 차이점이 대체 뭐야?-왕초보도이해하는 프로그래밍 안녕하세요, 여러분. 오늘 저는 여러분께 Git과 GitHub의 차이에 대해 이야기를 나누려고 합니다. 두 주제는 자주 혼동되는데, 사실 그 둘은 꽤 다른 개념입니다. 자, 그럼 시작해보죠. 우리가 살아가는 세상에서는 많은 사물이 서로 밀접한 관계를 가지고 있죠. 예를 들면, 바다와 물고기, 하늘과 별, 그리고 우리의 주제인 Git과 GitHub도 마찬가지입니다. 그런데, 이 둘은 정말로 같은 것일까요? 그것이 아닙니다. Git과 GitHub는 서로 다른 개체이지만, 하나 없이 다른 하나는 그 존재의 의미를 잃게 됩니다. 먼저 Git에 대해 이야기해보죠. Git은 버전 관리 시스템(VCS)의 하나입니다. 소스 코드의 변경 사항을 추적하고 여러 사람들이 동시에 작업할 수 있게 해주는 도구죠. 이렇게 표현하.. 2023. 9. 16. 프로그래밍에서 추상화가 대체 뭐야?-왕초보도 이해하는 자바 프로그래밍에서 “추상화”라는 말씀을 들어보셨나요? 이는 복잡한 문제나 시스템을 단순하게 만드는 방법을 의미합니다. 프로그래머분들께서는 이런 추상화를 통해 핵심 기능에만 집중하실 수 있죠. 이것을 예를 들어 설명드리자면, 건축가가 건물을 설계할 때 각 층의 세부 사항은 생각하지 않고 전체적인 구조만을 그릴 때와 비슷한 원리입니다. 추상화는 프로그래밍에서도 여러 형태로 표현되곤 합니다. 함수나 메소드를 통해 특정 작업을 감추거나, 클래스와 객체로 데이터와 기능을 함께 묶는 것도 그 예시 중 하나입니다. 이렇게 만들어진 코드는 다시 사용하기도, 수정하기도 편리하답니다. 일상생활에서도 추상화의 예를 찾아볼 수 있습니다. 전기 스위치를 누를 때, 그 안의 복잡한 원리나 회로를 모르고도 사용할 수 있는 이유, 그것.. 2023. 9. 16. 오버로딩, 오버라이딩 차이가 대체 뭔데?-왕초보도 이해하는 자바 자, 여러분! 오늘 우리가 함께 다뤄볼 주제는 바로 프로그래밍에서 자주 마주치게 되는 두 가지 중요한 개념, '오버로딩'과 '오버라이딩'입니다. 이 두 개념, 들어보셨나요? 혹시 두 개념을 혼동하신 적 있으신가요? 그렇다면 지금부터 함께 천천히 그 차이를 파헤쳐 보겠습니다. 먼저, 오버로딩에 대해서 얘기해보죠. 오버로딩이란, 한 마디로 말해서 같은 이름의 함수나 메소드를 여러 개 만드는 것입니다. 그런데 이때 중요한 건, 그 안의 매개변수의 종류나 수가 다르다는 것이죠. “아, 그럼 같은 이름으로 다양한 일을 할 수 있겠네!”라고 생각하시는 분들, 바로 그렇습니다! 오버로딩의 핵심은 바로 ‘다양성’입니다. 마치 우리가 평소에 ‘읽다’라는 동사를 사용할 때 ‘책을 읽다’, ‘편지를 읽다’처럼 상황에 따라 .. 2023. 9. 16. 가비지 컬렉터가 대체 뭐야?-왕초보도 이해하는 프로그래밍 가비지 콜렉터에 대해 이야기를 시작하려 합니다. 너무나도 평범하게 쓰이는 용어지만, 무엇인지 자세히 알아본 적이 있는지요? 지금부터 그 세계를 함께 들여다보겠습니다. 본론에 들어가기 앞서, 컴퓨터 메모리라는 장소에 대해 생각해 보죠. 우리가 프로그램을 실행하면, 그 프로그램은 메모리에 데이터를 저장합니다. 그 데이터는 프로그램이 작동하는 동안 지속되죠. 그런데, 생각해 보면 필요 없어진 데이터도 분명히 있을 겁니다. 그렇다면 그 필요 없어진 데이터는 어떻게 되는 걸까요? 그래서 등장하는 게 바로 ‘가비지 콜렉터’입니다. 그 이름에서 느껴지는 것처럼, 필요 없어진 ‘가비지’ 즉, 쓰레기 데이터를 ‘콜렉트’하는 역할을 하는 것이죠. 정확히 말하면, 더 이상 사용되지 않는 메모리를 회수하여 다시 사용 가능한 .. 2023. 9. 16. API란 뭘까요 ? -왕초보도 이해하는 프로그래밍 API, 그것은 무엇일까요? API는 'Application Programming Interface'의 약자로, 어플리케이션 프로그래밍 인터페이스라는 뜻이죠. 어렵게 들릴 수 있지만, 사실 이건 컴퓨터 세상에서 엄청 중요한 역할을 하는 친구랍니다. 먼저, 축약형으로 이야기한다면, API는 소프트웨어들 사이의 연결고리 같은 거라고 보면 돼요. 쉽게 말해, 한 프로그램이 다른 프로그램과 어떻게 소통하고, 정보를 주고 받을 것인지를 정의해놓은 일종의 규약이랍니다. 시간의 흐름 속에서, API는 그 중요성만큼 변천의 과정을 겪었죠. 과거에는 간단한 명령어들로 이루어진 소규모의 인터페이스였지만, 지금은 클라우드 서비스, 소셜 미디어, 다양한 디지털 서비스들이 서로 연결될 수 있게 해주는 거대한 구조로 발전했어요... 2023. 9. 16. [무근본개발지식] TDD(Test Driven Development)가 대체 뭔데 !? - 쉽게 설명해드림 TDD (Test-Driven Development)는 소프트웨어 개발 방법론 중 하나로, 코드를 작성하기 전에 테스트를 먼저 작성하고, 이 테스트를 통과하는 코드를 작성하는 방식을 의미합니다. TDD의 주요 과정은 다음과 같습니다: 1. 실패하는 테스트 작성: 원하는 기능에 대한 테스트 케이스를 먼저 작성합니다. 이 시점에서는 테스트가 실패합니다. 2. 코드 작성: 테스트 케이스를 통과할 수 있는 최소한의 코드를 작성합니다. 3. 테스트 실행: 작성한 코드가 테스트를 통과하는지 확인합니다. 4. 리팩토링: 코드를 개선하고 최적화합니다. * 예시: 간단한 덧셈 함수 작성 (파이썬 기준) 1. 실패하는 테스트 작성 def test_add(): result = add(1, 2) assert result ==.. 2023. 8. 23. [무근본 WEB(웹)표준] Restful API 가 대체 뭔데 난리야 !? - 쉽게 알려드림 RESTful API는 웹 서비스의 설계와 구현에 있어서 널리 사용되는 아키텍처 스타일입니다. REST는 "Representational State Transfer"의 약자로, 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처 원칙 집합을 의미합니다. RESTful API는 이러한 REST 원칙을 따르는 웹 서비스 API를 지칭합니다. RESTful API의 주요 특징은 다음과 같습니다: 1. 자원(Resource) 중심의 아키텍처 RESTful API는 웹 서비스의 자원을 URL로 표현합니다. 예를 들어, 사용자 정보를 관리하는 서비스에서는 `/users`라는 URL을 통해 사용자 자원에 접근할 수 있습니다. 2. 상태를 유지하지 않음 (Stateless) 각 요청은 서버에서 어떠한 상태 정.. 2023. 8. 23. [무근본자바(JAVA)] OOP의 다섯가지 설계 원칙이 뭔데? 쉽게 설명해줄게 OOP의 5가지 설계 원칙은 "SOLID"라는 약어로 알려져 있습니다. SOLID 원칙은 객체 지향 프로그래밍과 설계에 있어서 효율적이고, 유지보수가 용이한, 확장성 있는 시스템을 만들기 위한 핵심 원칙들을 의미합니다. 각 원칙은 다음과 같습니다: 1. S - 단일 책임 원칙 (Single Responsibility Principle, SRP) - 한 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 즉, 클래스가 변경되어야 하는 이유는 오직 하나뿐이어야 합니다. 이 원칙을 따르면, 각 클래스는 명확한 목적을 가지게 되어 코드의 유지보수가 용이해집니다. 2. O - 개방-폐쇄 원칙 (Open-Closed Principle, OCP) - 소프트웨어의 구성요소(클래스, 모듈, 함수 등)는 확장에는 열려 있어.. 2023. 8. 22. [무근본 자바(JAVA)] OOP란? OOP가 뭔데? 쉽게 설명해줄게 ! 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍 패러다임 중 하나로, 현실 세계의 사물이나 개념을 객체로 표현하고, 이러한 객체들 간의 상호작용을 통해 프로그램을 구현하는 방법론입니다. OOP는 크게 네 가지 주요 개념으로 구성되어 있습니다: 캡슐화, 상속, 다형성, 그리고 추상화입니다. 1. 캡슐화(Encapsulation) - 캡슐화는 객체의 데이터와 그 데이터를 처리하는 함수를 하나로 묶는 것을 의미합니다. 이를 통해 객체의 내부 데이터는 외부에서 직접 접근할 수 없게 되며, 오직 객체가 제공하는 함수를 통해서만 접근이 가능하게 됩니다. 이렇게 함으로써 데이터의 무분별한 변경을 막을 수 있으며, 객체의 안정성을 높일 수 있습니다. 2. 상속(Inheri.. 2023. 8. 22. [무근본 안드로이드] 인형 가격 구하기 [질문사항] 안드로이드 프로그래밍....도와주세요 라디오 버튼 6개의 각각 두번째 항목이 선택된 게 초기화면이자 초기화 버튼을 눌럿을 때의 화면인데 총액 버튼을 누르면 선택된 항목의 갑이 더해져 나와야하는데 애뮬레이터를 켜고 바로는 되는데 초기화버튼을 누르고 나서 총액 버튼을 누르면 계산 버튼을 눌러도 0이더라구요 총액버튼을 누르면 2000이 떴으면 좋겠습니다. public void onBtn1(View v){ //초기화 버튼 rb2.setChecked(true); rb5.setChecked(true); this.cnt = 1; // 수량 this.dollPrice = 0; this.sizePrice = 0; tv1.setText(cnt + ""); Toast.makeText(getApplicationC.. 2023. 4. 20. [무근본 파이썬] 파이썬을 이용한 네이버 증권 정보 크롤링 방법 ! - 왕초보도 이해하는 파이썬 코드예시 [질문사항] python을 이용한 네이버 증권정보 크롤링 코드 다음 코드를 입력하였을 때 제대로 empty dataframe 이라서, 엑셀에도 아무 내용이 표시되지 않습니다. 혹시 어떻게 고쳐야 할까요? from selenium import webdriver from bs4 import BeautifulSoup import pandas as pd import time # 크롬드라이버 경로 설정 driver = webdriver.Chrome('your_chrome_driver_path') # 종목 코드 입력 code = '005930' # 재무제표 페이지로 이동 url = f' https://finance.naver.com/item/coinfo.naver?code= {code}&target=finsum_m.. 2023. 4. 20. [무근본 스프링] @Test 어노테이션에 대해 - 왕초보도 이해하는 상세 설명 ! @Test 어노테이션은 JUnit 프레임워크에서 테스트 메서드임을 나타내는 어노테이션입니다. Spring Framework에서도 JUnit을 기반으로 하므로 @Test 어노테이션을 사용하여 테스트 코드를 작성할 수 있습니다. 이 어노테이션은 메서드에 붙여서 해당 메서드가 테스트 메서드임을 나타내며, 해당 메서드가 실행되면서 자동으로 단위 테스트가 수행됩니다. @Test 어노테이션에 대해 더 자세히 알아보겠습니다. [사용 방법] @Test 어노테이션은 다음과 같이 메서드에 붙여 사용합니다. @Test public void testMethod() { // 테스트할 코드 작성 } @Test 어노테이션을 사용하여 정의한 메서드는 단위 테스트를 위한 메서드입니다. 메서드 이름은 테스트의 의미를 잘 나타내도록 작성.. 2023. 4. 20. [무근본 스프링] REST API에서 PATCH 요청이란? - 코드 샘플 REST API에서 PATCH 요청은 리소스의 일부분을 수정하는 요청입니다. PUT 요청과는 달리, PATCH 요청은 리소스의 전체를 교체하지 않고 일부분만 수정하는 것이 목적입니다. 예를 들어, 게시글의 제목(title)만 변경하고자 할 경우, PATCH 요청을 사용하여 서버에 해당 변경 사항을 전달합니다. PATCH 요청은 PUT 요청과 달리 전송되는 데이터가 변경된 속성만 포함하고, 나머지 속성은 변경되지 않은 상태로 유지됩니다. REST API에서 PATCH 요청을 처리하기 위해서는, 클라이언트가 전달한 데이터를 분석하여 변경된 속성을 식별하고, 해당 속성만 업데이트하는 로직이 필요합니다. 이를 위해서는 서버 측에서 별도의 PATCH 요청 핸들러를 구현해야 합니다. Spring Framework에.. 2023. 4. 20. [무근본 자바] restapi patch 요청 테스트 중 : java.lang.NoClassDefFoundError 해결 방안 [질문사항] 현재 restapi patch요청 테스트 중인데 java.lang.NoClassDefFoundError: org/apache/hc/client5/http/classic/HttpClient 이런 오류가 납니다. 구글에서 찾아봐도 안나와서 질문드립니다. 아래 테스트 코드입니다. class ArticleApiControllerTest { @LocalServerPort private int port; @Autowired private TestRestTemplate restTemplate; @Autowired private ArticleServiceImpl articleService; @Autowired private ArticleRepository articleRepository; @Before p.. 2023. 4. 20. [무근본 C#] OAuth 2.0 인증 프로토콜 사용방법 예제 [질문] 안녕하세요 제가 게임 서드 파티 프로그램을 만드는 중인데, 사용자 정보를 사용해야되서 게임회사에서 제공하는 OAuth 2.0 을 사용하면된다고 안내를 해주더구요. 그래서 이걸 이용해서 만들려고 하는데 잘 되지 않아 도움이 필요합니다. 사용하고 있는 언어는 C#입니다. string authorizationEndpoint = "인증 엔드포인트"; string tokenEndpoint = "토큰 엔드 포인트"; string clientId = "클라이언트 아이디"; string clientSecret = "비밀번호"; string redirectUri = "콜백"; string state = Guid.NewGuid().ToString(); string scope = "요청할 정보"; string re.. 2023. 4. 18. [무근본 파이썬] Pandas 를 통한 Excel 데이터 활용하기 ! [질문] 파이썬으로 엑셀 다른 시트에 있는 값을 vlookup 하여 변경하고 컴마 기준으로 데이터를 split 하여 생성 후 저장 할 수 있을까요?.. 배우면서 공부하는 중인데 쉽지 않네요 ㅠ.. 예를 들어 첫번째 시트에 밑에 와 같은 데이터가 있으면 ID 성별 좋아하는숫자 좋아하는음식 1 남자 1,2,3 빵 2 여자 1,2 밥 3 남자 2,3,4 빵 두번째 시트에 성별 남자 1 성별 여자 2 좋아하는음식 빵 1 좋아하는음식 밥 2 최종적으로 나와야 하는 데이터 : ID 성별 좋아하는 숫자1 좋아하는 숫자2 좋아하는 숫자3 좋아하는 숫자4 좋아하는음식 1 1 1 2 3 1 2 2 1 2 2 3 1 2 3 4 1 [답변] 파이썬에서 엑셀 파일을 다루는 경우에는 대표적으로 pandas 라이브러리를 많이 사용.. 2023. 4. 18. [무근본 유니티] 자동차가 코너에서 충돌 시 회전하는 스크립트 작성법 [질문] 유니티 3d로 자동차가 지나가다가 코너에서 충돌하면 회전하는 스크립트를 짜고있는데 처음 부딪혔을때는 회전을 한번만 90도로 잘하는데 두번째 부딪히는순간 2번 회전을 해요 ㅠ 한번만 회전하고싶은데 코드 첨부합니다 void OnTriggerEnter(Collider other) { if (!a && other.gameObject == box) { // 회전할 각도 계산 Quaternion targetRotation = Quaternion.Euler(0, -90f, 0) * transform.rotation; // 오브젝트 회전 transform.rotation = targetRotation; Debug.Log("1차회전"); a = true; } else if (!b && other.gameObje.. 2023. 4. 18. [무근본 파이썬] 파이썬 커피가게 큐 대기인원 코드 [질문] 파이썬으로 커피가게의 큐 대기인원 코드를 작성하시오 - 오전 8시에 시작해서 오후 10시에 종료하는 커피가게 큐 대기인원의 분포를 모의실험하시오. 큐에 최대 인원은 몇 명인가? 시간대 별로 도착시간 분포를 조정해 보세요 즉, 점심시간에는 사람이 붐비게 해 봅시다. 주문을 두명이 받는다면 어떻게 되는가? - Cust Class를 만들고, arriveTime, orderTime, outTime을 관리한다. - Shop Class를 만들고, custQueue를 만든다. . getSize method: 큐 크기를 구한다. . entCust method: 큐에 cust를 넣는다. . outCust method: 큐에서 cust를 내보낸다.(조건은 현재 시간보다 outTime이 작은 cust는 deQueu.. 2023. 4. 18. [무근본 스프링] 클라이언트 상호 인증서 방식 사용하기(발급부터 사용까지) 웹에서 클라이언트 상호 인증서 방식을 사용하는 이유 웹에서 클라이언트 상호 인증서 방식을 사용하는 이유는 다음과 같습니다. 보안 강화 일반적인 HTTP 프로토콜을 사용하는 웹 서비스는 암호화되지 않은 데이터를 전송하기 때문에, 중간에 데이터를 가로채어서 정보를 탈취할 수 있는 보안 취약점이 존재합니다. HTTPS 프로토콜은 데이터를 암호화하여 전송하기 때문에, 이러한 보안 취약점을 보완할 수 있습니다. 클라이언트 상호 인증서 방식을 사용하면, 서버와 클라이언트 간의 상호 인증을 수행하여 더욱 보안을 강화할 수 있습니다. 불법 접근 방지 일반적인 로그인 방식은 사용자 ID와 비밀번호를 입력하여 인증하는 방식입니다. 이 경우, 타인이 사용자 ID와 비밀번호를 알아내어 불법적으로 접근할 수 있는 취약점이 존재.. 2023. 4. 15. [무근본 스프링] @Value 어노테이션에 대해 (예시 코드 포함) Spring에서 @Value 어노테이션에 대해 Spring에서 @Value 어노테이션은 스프링 빈으로 등록된 객체에서 properties 파일이나 환경 변수 등의 값을 주입받을 때 사용됩니다. @Value 어노테이션을 사용하면, properties 파일이나 환경 변수 등에 정의된 값을 손쉽게 읽어올 수 있습니다. 예를 들어, 다음과 같은 properties 파일이 있다고 가정해봅시다. database.url=jdbc:mysql://localhost:3306/mydb database.username=admin database.password=1234 이 properties 파일에 정의된 값을 읽어오기 위해서는, 먼저 Spring의 PropertySourcesPlaceholderConfigurer 빈을 등록.. 2023. 4. 15. [무근본 스프링] @transactional 어노테이션에 대해 (예시코드 포함) Spring의 @Transactional 어노테이션 Spring의 @Transactional 어노테이션은 메서드 레벨이나 클래스 레벨에서 사용할 수 있으며, 데이터베이스 트랜잭션 관리를 간편하게 할 수 있게 해줍니다. @Transactional 어노테이션을 사용하면, 해당 메서드가 실행될 때 Spring은 트랜잭션을 시작하고, 메서드 실행이 완료될 때 트랜잭션을 종료합니다. 만약 메서드 실행 중에 예외가 발생하면, Spring은 자동으로 트랜잭션 롤백을 수행하여 이전 상태로 되돌립니다. 예를 들어, 다음은 @Transactional 어노테이션을 사용하여 간단한 서비스 계층의 메서드를 구현한 예입니다: @Service public class UserService { @Autowired private Use.. 2023. 4. 15. [무근본 파이썬] 파이썬에서 삼각형 별모양 출력하는 방법 ! 파이썬에서 아래와 같이 별표가 출력되도록 하는 코드를 소개하겠습니다. 1번: ****** ***** **** *** ** * 2번: * ** *** **** ***** ****** 3번: ****** ***** **** *** ** * 4번: * *** ***** ******* ********* 1번: for i in range(6, 0, -1): print("*" * i) 2번: for i in range(1, 7): print(" " * (6 - i) + "*" * i) 3번: for i in range(6, 0, -1): print(" " * (6 - i) + "*" * i) 4번: for i in range(1, 6): print(" " * (5 - i) + "*" * (2 * i - 1)) 위 .. 2023. 4. 9. C언어와 Java 스코프 범위 차이에 대하여 void f(){ int a = 3; int c = 0; for(int i = 0; i 이 똑같은 코드를 자바와 c에서 돌린다고 하면, C은 왜 실행이 되고 자바는 왜 for문안쪽의 a에서 오류가 날까요? 답변 ==> 위 코드는 C와 자바에서 실행 결과가 다를 수 있는 코드입니다. 이는 C와 자바의 변수 스코프(scope)가 다르기 때문입니다. C에서는 변수의 스코프가 블록(block) 단위로 구분됩니다. 위 코드에서 변수 a는 함수 f()의 블록 안에서 정의되었으며, for문 안에서 정의된 변수 a는 for문의 블록 안에서만 유효합니다. 따라서, for문 안에서 정의된 변수 a와 함수 f() 안에서 정의된 변수 a는 이름이 같.. 2023. 4. 9. [무근본 파이썬] 사용자에게 값을 입력받은 뒤 리스트의 값 전달해주기 ! 파이썬에서 사용자로부터 숫자를 입력받는 방법은 input() 함수를 이용하는 것입니다. 이후, 리스트에서 해당하는 숫자에 해당하는 값을 출력하려면, 입력받은 숫자를 리스트의 인덱스로 사용하여 리스트이름[인덱스] 형태로 접근하면 됩니다. 아래는 이를 구현한 예시 코드입니다. # 리스트 생성 my_list = [10, 20, 30, 40, 50] # 사용자로부터 숫자 입력 받기 number = int(input("숫자를 입력하세요: ")) # 입력받은 숫자를 리스트에서 찾아 해당하는 값 출력 value = my_list[number] # 결과 출력 print("리스트에서 {}번째 자리에 해당하는 값은 {}입니다.".format(number, value)) 위 코드에서는 input() 함수를 이용하여 사용자로.. 2023. 4. 9. html에 mov 사용하면 안되나요? - autoplay loop controls html에 mov 사용하면 안되나요? 이런식으로 삽입하였는데요 , 자동재생이 안되네요. 답변 ==> 웹 브라우저에서 자동재생을 방지하는 정책이 있기 때문에, 태그에서 autoplay 속성이 작동하지 않을 수 있습니다. 이는 사용자 경험 개선을 위한 정책이며, 사용자가 의도하지 않은 미디어 재생을 막아줍니다. 하지만, 일부 웹 브라우저에서는 사용자의 인터랙션에 의해 자동재생을 허용하는 경우도 있습니다. 이 경우, 태그에서 autoplay 속성을 사용하면 자동재생이 가능합니다. 다만, 보안 및 사용성 문제 등으로 자동재생을 허용하지 않는 경우도 많으므로, 이에 대한 대처가 필요합니다. 따라서, 태그에서 자동재생이 되지 않는다면, 사용자 인터랙션에 의해 재생할 수 있도록 UI를 구성하거나, 사용자에게 자동재생.. 2023. 4. 9. 출생 연도를 입력하면, 백신을 접종받을 수 있는 요일을 출력하는 프로그램 - 두근두근 파이썬 제 5장 연습문제 12번 감염병 떄문에 다음과 같이 출생 연도의 끝자리를 이용한 5부제로 백신을 주사하기로 하였다. 출생 연도를 입력하면, 백신을 접종받을 수 있는 요일을 출력하는 프로그램을 작성해보자 출생연도 끝자리가 0과 5일 경우 : 월요일 출생연도 끝자리가 1과 6일 경우 : 화요일 출생연도 끝자리가 2과 7일 경우 : 수요일 출생연도 끝자리가 3과 8일 경우 : 목요일 출생연도 끝자리가 4과 9일 경우 : 금요일 year = int(input("출생 연도의 끝자리를 입력하세요: ")) if year % 5 == 0: print("월요일") elif year % 5 == 1: print("화요일") elif year % 5 == 2: print("수요일") elif year % 5 == 3: print("목요일") els.. 2023. 4. 9. [C++ 예시] 드라이버 코드란? 드라이버 코드란 컴퓨터 하드웨어와 소프트웨어 간의 인터페이스 역할을 담당하는 코드입니다. 컴퓨터의 하드웨어는 소프트웨어와 직접적으로 통신할 수 없기 때문에, 운영체제와 애플리케이션 등의 소프트웨어는 드라이버 코드를 통해 하드웨어와 소통합니다. 예를 들어, 마우스나 키보드, 프린터, 그래픽 카드, 네트워크 카드 등과 같은 하드웨어는 각각의 드라이버가 있어야 운영체제나 애플리케이션에서 사용할 수 있습니다. 드라이버 코드는 해당 하드웨어와 소프트웨어 간의 상호작용을 중계하며, 이를 통해 소프트웨어에서 하드웨어를 제어하고 데이터를 전송할 수 있습니다. 따라서 드라이버 코드에 대한 설명을 요청받았다면, 어떤 하드웨어를 제어하는 코드인지, 어떻게 작동하는지, 어떤 입력과 출력을 처리하는지 등에 대해 설명하는 것이 .. 2023. 4. 9. 트로미노 알고리즘을 분할정복법으로 해결하는 방법! 트로미노(Tromino)는 2^k x 2^k 크기의 체스판에서 1칸을 제외한 모든 칸이 채워져 있을 때, 그 빈 칸을 1칸의 직사각형 모양 블록으로 덮는 문제입니다. 분할정복법을 사용하여 트로미노 알고리즘을 구현하려면, 큰 문제를 작은 문제로 분할하고, 작은 문제에서 구한 해결책을 이용해 큰 문제의 해결책을 찾아가는 과정이 필요합니다. 아래는 분할정복법을 이용한 트로미노 알고리즘 구현 예시입니다. 문제 분할 체스판을 4개의 크기가 같은 사각형으로 분할합니다. 빈 칸이 포함된 사각형에는 임의의 위치에 1칸의 직사각형 모양 블록을 놓습니다. 기저 조건 분할한 사각형의 크기가 2x2가 될 때까지 계속 분할합니다. 작은 문제 해결 2x2 크기의 사각형에서는 빈 칸을 찾아 해당 위치에 1칸의 직사각형 모양 블록을.. 2023. 4. 9. 파이썬 변수 z를 사용하여 두 수를 교환하는 방법, 직접교환 방법 x와 y에 각각 11,22를 할당하고 1)숫자를 직접 이용하지 않고, 다른 변수 z를 사용하여 두 수를 교환하는 방법과 2)직접 교환하는 방법으로 프로그램을 작성하시오 변수 z를 사용하여 두 수를 교환하는 방법: x = 11 y = 22 z = x x = y y = z print("x =", x) print("y =", y) 실행 결과 x = 22 y = 11 2. 직접 교환하는 방법 x = 11 y = 22 x, y = y, x print("x =", x) print("y =", y) 결과: x = 22 y = 11 두 방법 모두 결과는 같습니다. z 변수를 사용하여 값을 교환하는 것은 임시적인 변수를 사용하는 것이기 때문에 불필요한 변수를 생성하지만, 직접 교환하는 방법은 코드가 간결하고, 파이썬에서.. 2023. 4. 9. 이전 1 ··· 4 5 6 7 8 9 10 11 다음