안녕하세요 큰돌님! 덕분에, 코테도 준비하며 강의도 잘 보고 있습니다. http://boj.kr/320a351402cb451d8aff7a538e73189d 3-G 문제를 공부하면서 질문이 있습니다. Q1. 오버플로우 확인 할 때, 이렇게 작성하면 어떤 문제가 생기나요? visited[next] == visited[here]+1 과 같이, 소모되는 시간이 같은 경우도, 동일한 cnt[]에 누적해야 한다는 로직은 이해했지만 코드로 옮기기 어려워서 질문드립니다 ㅠ *링크 내의 아래와 같이 적힌 부분이 질문입니다. if(next < 0 || next >= MAX || visited[next]) continue; visited[next] = visited[here] + 1; cnt[next] += cnt[here]; ... if(visited[next] == visited[here]+1) cnt[next] += cnt[here];
# 스도쿠 제대로 풀었는지 검사하는 알고리즘 import sys sys.stdin = open("./탐색&시뮬레이션/스도쿠.txt", 'r') n = 9 def solution(sudoku): for i in range(len(sudoku)): rawTable = {} colTable = {} for j in range(n): if sudoku[i][j] in rawTable or sudoku[j][i] in colTable: return False else: rawTable[sudoku[i][j]] = sudoku[i][j] colTable[sudoku[j][i]] = sudoku[j][i] # 이제 3*3 검사도 하자 for i in range(3): for j in range(3): matrixTable = {} for k in range(3): for s in range(3): if sudoku[i*3+k][i*3+s] in matrixTable: return False else: matrixTable[sudoku[i*3+k][i*3+s]] = sudoku[i*3+k][i*3+s] return True sudoku = [list(map(int, input().split())) for _ in range(n)] if solution(sudoku): print('Yes') else: print('No')
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
선생님 안녕하세요, 강의 매번 잘 듣고 있습니다. 크롤링 복습 중 질문이 있어 아래와 같이 문의 드립니다 :) 강의명: 실전크롤링과 강력한 크롤링 기술 팁2 강의 내 시간: 4:35 질문: 하단의 초록색 부분만 추출할 때 저는 아래 첫번째샷으로 짜서 >>print(mydata.get_text() 결과값이 선생님이 하신 것과 동일한 결과가 나왔는데요, 선생님께서는 두번째 샷으로 설명해주셨는데, 다시 titles=mydata.find_all('li','course')를 받아서 출력을 해야 하는 건지 궁금합니다. 이미 id='dev_course_list로 상위 id에서 확정을 하고 들어가서 'li','course' 부분을 작성하지 않아도 된다고 생각했습니다. import requests from bs4 import BeautifulSoup res=requests.get('https://davelee-fun.github.io/blog/crawl_test') soup=BeautifulSoup(res.content,'html.parser') mydata=soup.find('ul',id='dev_course_list') print(mydata.get_text()) import requests from bs4 import BeautifulSoup res=requests.get('https://davelee-fun.github.io/blog/crawl_test') soup=BeautifulSoup(res.content,'html.parser') mydata=soup.find('ul',id='dev_course_list') titles=mydata.find_all('li','course') for title in titles: print(title.get_text())
안녕하세요, 강의를 듣고 로그인 하는 과정에서의 궁금증이 생겨 질문 남깁니다. 로그인할 때 유저의 id,비밀번호를 body에 넘기고 있는 사이트를 우연히 발견하게 되면서 보안에 굉장히 취약할 거란 생각을 하게 되었고 몇몇 유명 사이트들을 확인해보니 대부분 네트워크탭 payload에 담기지 않는 것을 확인했습니다. 조금 더 찾아보니 세션id를 활용하는 경우 서버에 로그인 요청할 때 authorization 헤더에 base64로 인코딩해서 전송하는 basic authentication 방식이 있는 것을 확인했습니다. 궁금한 것이 제가 찾아본 내용이 실무에서도 사용되고 있는 방식인지 그렇지 않다면 유저정보를 어떤 방식으로 body에 담지않고 서버에 전송할지 있는지 궁금합니다.
스프링 MVC1편 >> [3.서블릿,JSP,MVC패턴] 강의에서 /WEB-INF/ 경로에 있는 JSP 는 외부에서 직접 호출할 수 없다고 하였는데 JAR 패키징 유형의 프로젝트에서도 HTML 파일이나 JSP 파일을 만들 때, 브라우저에서 직접 접근하지 못하도록 하는 방법이 있나요 ??
[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 현재 스프링부트 2.7.9쓰고있고 어떻게 해결해야할까요
평소에는 머신코드로 작성된 실행파일의 형태로 존재하겠지만, 그 실행파일을 실행명령을 내려 운영체제가 RAM위에 올리게 되면 (RAM에 올리게되는 방식은 운영체제 프로그램별로, 컴파일러 프로그램별로 각각 상이함.) 결국 main함수에서 소스코드로 써 내려간 명령코드들, 프로그램 내부에서 사용하기 위해 선언 한 변수, 혹은 상수(const 변수), 그외의 리터럴값들 등등이 RAM위에 올라가게되고 CPU와 RAM의 상호작용으로 프로그램이 실행되고. 보통 일반적으로 CPU가 RAM의 각 메모리주소 속 데이터를"복사"해서 레지스터에 임시저장시킨뒤 거기서 명령코드를 디코딩해서 해석한대로 명령코드들을 수행하는구나 라고 C언어 강의 첫주차에서 배웠던것이 기억나는데요. 첫주차 강의를 들으며 제가 이해한 바로는, 예컨대 int a = 42; 라는 코드를 프로그램이 수행하는 방식은 1. a 라는 변수명에 할당되는 특정 메모리주소와 그 메모리주소의 공간에는 4byte라는 공간을 만들어 두게 될 것이고 2. 42라는 리터럴 값 역시도 접미사가 붙지는 않았지만, 컴파일러가 컴파일 하는 과정에서 적절히 특정 정수형 자료형의 리터럴값으로 처리하여, RAM위에 올라간 다음 3. a = 42; 라는 대입연산자를 수행하게 되면 42라는 값을 지시하는 메모리주소의 값을 CPU의 레지스터가 복사하여 임시저장하고있다가, 그것을 a라는 메모리주소에 대입시킨다 라고 이해하고 있습니다. 질문드리고 싶은것은 Q1)이번 5.2 강의에서 교수님께서 i = 1024; 라는 코드에서 1024와 같은 리터럴 값들은 메모리 공간을 부여받지 못하기 때문에 data object가 아니다 라고 말씀하셨는데.. 리터럴 값들은 프로그램이 실행될 때, RAM에 올라가지 않는건가요? Q1-2) 만약 리터럴 값들을 운영체제가 메모리에 올려주지 않는다면 i = 1024; 와 같이 대입연산자의 명령을 CPU가 처리할 때, "어디서" 1024라는 리터럴값을 복사해서 레지스터에 임시저장해두었다가 a라는 메모리주소에 대입할 수 있는걸까요? Q2) const라는 제한자를 이용하여 선언 및 초기화시킨 상수는 메모리 주소도 메모리 공간도 가지고 있다. 그래서 l value이다. 그런데 앞선 다른 5.2강의 질문들에서 object 들은 항상 l-value이지만, l-value들은 항상 object가 아니다 라는점 확인했습니다. 그렇다면 초기화 이후 값을 변경할 수 없는 상수는 object가 맞는걸까요? 아직 l-value와 object의 차이가 감이 안잡혀서 질문드렸습니다.
안녕하세요 선생님 ~ 수업 잘 듣고있습니다! 외부에서 gltf파일이나 glb파일을 불러와서 모델 주위에 충돌 상자를 만들어서 적용하려고 하는데요. 외부에서 불러온 모델들의 너비나 높이, 깊이가 각각 제각각이라 gltf의 정확한 너비, 높이, 깊이값을 알고싶습니다 ㅠㅠ 치수를 얻기 위해 어떻게 해야 될까요?
if (rand.Next(0, 2) == 0) { Tile[y, x + 1] = TileType.Empty; count++; } else { int randomIndex = rand.Next(0, count); Tile[y + 1, x - randomIndex * 2] = TileType.Empty; count = 1; } 만약에 (1, 1) (1, 2) (1, 3) 이렇게 세 지점이 연속해서 뚫려있을 경우, (1, 0) 부터 보았을 때 (빨) (초) (빨) (초) 이런 상태에서 시작했다고 가정한다면.. x == 3 일 때 count 는 2 가 되고, 그렇기 때문에 randomIndex = {0, 1} 이 가능합니다. randomIndex = 0 일 경우 새로 뚫릴 지점의 좌표는 (2, 3) 이 되고, 1일 경우 (2, 1) 이 됩니다. 따라서 이 경우에 (2, 2) 지점은 뚫릴 가능성이 없습니다. >> 위에서 제가 이해한 것이 맞는건지 궁금합니다. 왜 이렇게 헷갈리는지 모르겠네요..
Traceback (most recent call last): File "C:\Users\[user name]\AppData\Local\Programs\Python\Python39\lib\tempfile.py", line 256, in mkstemp inner fd = _ os.open (file, flags, 0o600) PermissionError: [Errno 13] Permission denied: 'C:\\Users\\tmp4jb5bpf2' 위와 같은 문제가 계속 발생합니다. 다른 패키지들은 전혀 문제가 없는데 저 ultralytics만 계속 권한 거부 문제가 뜹니다. tempfile을 chmod로 임의로 수정하는건 안됩니다. 해봤는데 그럼 다른 패키지들마저 오류가 생깁니다.
안녕하세요! 동일한 쓰레드가 write_lock을 잡고 있을 때는 read_lock을 잡을 수 있지만 read_lock을 잡고 있을 때에는 write_lock을 잡을 수 없다는 것 까지는 이해가 됐습니다. 그래서 ReadLock() 메소드에서 같은 쓰레드가 write_lock을 잡고있는지 체크를 해서 잡고있다면 단순하게 read flag를 1 증가해서 통과해주고 있죠. 근데 그렇다면 WriteLock() 메소드에서는 동일한 쓰레드가 read flag로 0을 갖고있는지 확인해야 하는 것 아닌가요? R -> W가 허용되지 않는다면, write_lock을 시도 할 때에 동일 쓰레드의 read flag가 0인지 체크하는 코드가 없어도 되는 이유가 뭔지 궁금합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] public class MemberSaveControllerV3 implements ControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override public ModelView process(Map<String, String> paramMap) { String username = paramMap.get("username"); int age = Integer.parseInt(paramMap.get("age")); Member member = new Member(username, age); memberRepository.save (member); ModelView mv = new ModelView("save-result"); mv.getModel().put("member", member); return mv; } } 이 코드에서 자꾸 run을 하고 new-form에서 작성하게 될 시 http://localhost:8080/front-controller/v3/members/save 이 경로에서 이런식으로 뜨게 되는 데 로그에서 어떤 오류가 발생했는 지 확인해본 결과 username=son&age=26] 2023-03-21T02:35:34.035+09:00 ERROR 16792 --- [nio-8080-exec-1] a.c.c.C.[.[.[.[frontControllerServletV3] : Servlet.service() for servlet [frontControllerServletV3] in context with path [] threw exception java.lang.NumberFormatException: Cannot parse null string 이런식으로 에러가 난 겁니다. int age = Integer.parseInt(paramMap.get("age"));이 코드떔에 에러 난건데 강의 듣고 라이브코딩한거라 어떤 부분에서 잘못된건지 모르겠네요... 알려주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. libs 폴더에 jar파일 있는 것까지 했는데 localhost :8080 가면 안됩니다..