inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

질문 드립니다!!

미해결

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

빈 클래스 생성시에, 디폴트 생성자, 생성자, getter setter를 만들어야하는 이유를 알 수 있을까요...? helloWorldBean 예제에서는 생성자만 만들어도 될 것 같은데 getter setter 도 추가적으로 필요한건지 궁금합니다.

  • spring-boot
  • rest-api
Jerry 댓글 1 좋아요 1 조회수 181

테이블 아이디 설계 및 hidden 태그 관련 질문 드립니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

항상 명강의 감사합니다. 강의를 들을때마다, 강사님에 노고가 느껴지니, 매번 소름이 돋네요. ㅎㅎ 오늘도 강의 잘 듣고 있습니다. 2가지 질문을 드립니다. 1. 테이블 아이디 설계 저는 회원 테이블을 설계할때, 기본키를 '아이디' 로 설정했었습니다. 아이디가 유니크 하기 때문에 기본키로 잡았었는데, 강의에서는 엔티티에서 기본키를 따로 잡으시고(기본키는 자동으로 값을 셋팅) 진행을 하시던데 실무에서도 회원 테이블을 설계하신다면 '회원 아이디' 와는 별개로 기본키 필드를 설계하고 @GereratedValue 로 자동으로 값을 할당하도록 진행하시나요.? 2. hidden 태그(다소 부족한 질문일수도 있습니다.) 강의 내 코드를 보면, 회원에 대한 아이디를 hidden 태그에 노출하는데, 이게 보안상에 문제가 될 여지는 없을 까요.? 물론 서버단에서 회원에 권한을 체크한다면 문제가 되지 않는다고는 생각하지만, 노출된다는게 꺼림칙해서요.....(단순히 제생각입니다.) 아니면 hidden 태그를 사용하지 않고, 구현하는 방법이 따로 있을까요.?

  • JPA
  • 웹앱
  • spring
  • java
  • spring-boot
햇병아리 댓글 1 좋아요 0 조회수 259

헤메고 있어 질문드립니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

이런 식으로 질문드리는 게 문제라는 점을 알면서도 어디서부터 건드려야 할 지 감이 오지 않아 질문드립니다. bind 함수에서 다른 유형은 문제 없는데 bind<Image>(typeof(Images)) 로 바인드 할 경우 문제가 발생합니다. 디버그를 해보니 Bind<T>로 이동하여 typeof(T) == typeof(gameObject) 조건을 만족하지 않아 else 문 FindChild<T>로 이동합니다. 그 다음 go == null 조건 만족하지 않고 리커시브도 트루기에 맨 아래 foreach문으로 이동하는데 디버깅을 해보니go.GetComponentsInChildren<T>()을 가져온 component에 ItemIcon이 아닌 PointButton이 들어갑니다. 이게 무슨 까닭으로 이리 되는 건지 가닥을 잡을 수 없어 장황하게 질문 남깁니다.

  • C#
  • unity
강동훈 댓글 2 좋아요 0 조회수 315

간단한 질문입니다.

해결됨

스스로 구축하는 AWS 클라우드 인프라 - 기본편

좋은 강의 감사드립니다. 정상적으로 index3.html 과 로고가 올라오는데요 X-Cache 값이 Miss from cloudfront 로 올라오는 이유가 궁금합니다. 또한 새로고침시 url 주소가 cloud front의 Domain Name이 아닌 s3 주소로 변경되는 이유가 궁금합니다.

  • 서버리스
  • aws
도쿄까지 댓글 1 좋아요 0 조회수 1609

안녕하세요 개인 프로젝트를 하는데 같은 함수 호출이 여러번 됩니다.

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

import React , { useEffect , useState , useMemo , useCallback , useRef } from ' react '; import { useSelector , useDispatch } from ' react-redux '; import { Row , Col , Button , Form , Input , Typography , Modal , Avatar , Upload , message } from ' antd '; import { useDropzone } from ' react-dropzone '; import ImgCrop from ' antd-img-crop '; import useInput from ' ./hooks/useInput '; import { CHANGE_PROFILE_REQUEST , CHANGE_NICKNAME_REQUEST , CHANGE_INTRO_REQUEST } from ' ../reducers/user '; const { Dragger } = Upload ; const { TextArea } = Input ; const { Text } = Typography ; const ProfileForm = () => { const { me , changeProfileLoading , changeNicknameLoading , changeNicknameDone , changeNicknameError , changeIntroLoading , changeIntroDone , changeIntroError , } = useSelector (( state ) => state . user ) ; const [ nickname , onChangeNickname ] = useInput ( me ?. nickname || '' ) ; const [ intro , onChangeIntro ] = useInput ( me ?. introduction || '' ) ; const [ profileImage , onChangeProfileImage , setProfileImage ] = useInput () ; const dispatch = useDispatch () ; useEffect (() => { if ( changeNicknameError ) { Modal . error ({ content : ' 닉네임 변경 중에 오류가 발생했어요. ' , }) ; } } , [ changeNicknameError ]) ; useEffect (() => { if ( changeNicknameDone ) { Modal . success ({ content : ' 닉네임을 변경했어요! ' , }) ; } } , [ changeNicknameDone ]) ; useEffect (() => { if ( changeIntroError ) { Modal . error ({ content : ' 자기소개 변경 중에 오류가 발생했어요. ' , }) ; } } , [ changeIntroError ]) ; useEffect (() => { if ( changeIntroDone ) { Modal . success ({ content : ' 자기소개를 변경했어요! ' , }) ; } } , [ changeIntroDone ]) ; const beforeUpload = useCallback (( file ) => { console . log ( ' beforeUpload ' ) ; if ( file . type !== ' image/jpg ' && file . type !== ' image/jpeg ' && file . type !== ' image/png ' ) { message . error ( ' jpg jpeg png 사진만 가능해요! ' ) ; return false ; } if ( file . size > 2 * 1024 * 1024 ) { message . error ( ' 프로필 이미지는 2MB 이하만 가능해요! ' ) ; return false ; } setProfileImage ( file ) ; return true ; }) ; const onUpload = useCallback ( ( files ) => { console . log ( ' onUpload ' ) ; if ( ! changeProfileLoading ) { const imageFormData = new FormData () ; imageFormData . append ( ' image ' , profileImage ) ; console . log ( profileImage ) ; dispatch ({ type : CHANGE_PROFILE_REQUEST , data : imageFormData , }) ; } } , [ profileImage , changeProfileLoading ] ) ; const onSubmitNickname = useCallback (() => { dispatch ({ type : CHANGE_NICKNAME_REQUEST , data : nickname , }) ; } , [ nickname ]) ; const onSubmitChangeIntro = useCallback (() => { dispatch ({ type : CHANGE_INTRO_REQUEST , data : intro , }) ; } , [ intro ]) ; const style = useMemo (() => ({ marginBottom : ' 20px ' , border : ' 1px solid #d9d9d9 ' , padding : ' 20px ' }) , []) ; return ( < Row justify = " center " > < Col xs = { 24 } md = { 12 } > < Form style = { style } layout = " vertical " > < Form.Item style = { { textAlign : ' center ' } } > < ImgCrop rotate quality = " 0.8 " modalTitle = " 이미지 조정 " modalOk = " 저장 " modalCancel = " 취소 " > < Upload showUploadList = { false } accept = " .jpg,.jpeg,.png " onChange = { onUpload } beforeUpload = { beforeUpload } > < Avatar src = { me ?. profile ? ` http://localhost:3100/ ${ me ?. profile } ` : null } size = { 256 } > { me ?. profile ? null : me ?. nickname [ 0 ] } </ Avatar > </ Upload > </ ImgCrop > </ Form.Item > < Form.Item label = { < Text strong > 이메일 </ Text > } > < Text type = " secondary " > { me ?. email } </ Text > </ Form.Item > < Form.Item label = { < Text strong > 닉네임 </ Text > } > < Input value = { nickname } onChange = { onChangeNickname } maxLength = " 20 " suffix = { < Text type = " secondary " > { ` ${ nickname . length } / 20 ` } </ Text > } /> < Button type = " primary " onClick = { onSubmitNickname } loading = { changeNicknameLoading } disabled = { me ?. nickname === nickname } > 변경 </ Button > </ Form.Item > < Form.Item label = { < Text strong > 자기소개 </ Text > } > < TextArea placeholder = " 당신을 멋지게 소개해보세요! " value = { intro } onChange = { onChangeIntro } rows = " 5 " spellCheck = { false } style = { { resize : ' none ' } } showCount maxLength = " 500 " /> </ Form.Item > < Form.Item style = { { textAlign : ' center ' } } > < Button type = " primary " shape = " round " size = " large " onClick = { onSubmitChangeIntro } loading = { changeIntroLoading } disabled = { me ?. introduction === intro } style = { { width : 200 , } } > 저장 </ Button > </ Form.Item > </ Form > </ Col > </ Row > ) ; } ; export default ProfileForm ; 강의를 듣고 나서 개인 프로젝트를 만드는 중인데, antd의 Upload 컴포넌트를 이용해서 이미지 업로드를 구현했습니다. 그런데 이미지를 업로드하면 onUpload 함수가 3번 실행됩니다. beforeUpload는 1번만 실행되는데, onUpload 만 3번 실행이 됩니다. 오늘 하루종일 찾아봤는데 문제점을 모르겠습니다. 혹시 어디가 문제일까요?

  • redux
  • react
  • nodejs
  • express
  • Next.js
1ncursio 댓글 1 좋아요 0 조회수 368

css main 클래스 관련 질문

풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]

삭제된 글입니다

  • HTML/CSS
  • es6
  • javascript
scy6500 댓글 1 좋아요 0 조회수 73

회원 가입 리팩토링 및 테스트 영상 질문입니다.

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

@DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); } 회원 가입 처리 - 입력값 정상 테스트의 마지막줄인 BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 쪽이 인식을 못하고 빨간줄을 내보냅니다. 영상에서는 then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 코드인데 then 앞에 BDDMockito.를 선언 안하면 아예 인식을 못하더군요. BDDMockito를 사용하여 then을 인식시키면 에러가 뜹니다. .send(any(SimpleMailMessage.class)); 센드쪽에서 any들어가는걸 인식 못하는것 같은데 junit을 써본적이 없어서 이부분을 잘 모르겠습니다. 어디가 잘못 된건지 알 수 있을까요??? spring boot version 2.4.2 입니다. java 11입니다. ======================================================================================= package com.studyolle; import static org.hamcrest.CoreMatchers.any; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import javax.mail.internet.MimeMessage; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.mockito.BDDMockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.web.servlet.MockMvc; import com.studyolle.account.AccountRepository; @SpringBootTest @AutoConfigureMockMvc class AppTests { @Autowired private MockMvc mockMvc; @Autowired private AccountRepository accountRepository; @MockBean JavaMailSender JavaMailSender; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signUpForm() throws Exception { mockMvc.perform(get("/sign-up")) .andDo(print()) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")) .andExpect(model().attributeExists("signUpForm")); } @DisplayName("회원 가입 처리 - 입력값 오류") @Test void signUpSubmit_with_wrong_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email..") .param("password", "12345") .with(csrf())) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")); } @DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send (any(SimpleMailMessage.class)); } }

  • thymeleaf
  • java
  • spring-boot
  • JPA
  • spring
짤짤이 댓글 1 좋아요 0 조회수 367

getchar() 에 관해 질문 드립니다.

미해결

홍정모의 따라하며 배우는 C언어

위와 같은 코드를 실행하였을 때, 콘솔창에서 입력을 할 때 엔터를 누를 때 마다 엔터 전의 문자들이 출력이 됩니다. 엔터도 그냥 문자 '\n' 으로 인식해서 다음 줄에서 입력을 계속 할 수 있을 것으로 생각했는데 왜 그런 건가요?!

  • c
m1n_q 댓글 6 좋아요 2 조회수 1445

cumsum ratio 관련하여 다시 질문드립니다.

미해결

단 두 장의 문서로 데이터 분석과 시각화 뽀개기

머리가 안돌아가네용..ㅠㅠ cumsum 이라는 누적 합 필드를 만들었는데 ratio 를 뒤로갈수록 커지는 우상향 선그래프로 그리고 막대그래프와 겹치고 싶어요 상기 이미지가 지금까지 한거고 그리고 싶은 그래프는 이거에요. 혹시 설명이 가능하실까요? ㅠ

  • python
  • pandas
Iron 댓글 1 좋아요 1 조회수 313

OSIV 를 끈 상태에서 개발하면 지연 로딩만 조심하면 되나여?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

1.osiv를 끈 상태에서는 지연 로딩 관련 로직들을 서비스 계층 이후로 트랜잭셔날의 영향권 아래에 있는 로직으로 옮기면 되는건가여? 지연 로딩 관련만 옮기면 되는건가여? 아니면 다른것들도 옮겨야 되나여? 2.성능 극대화가 필요한 앱이면 로직 구성이 조금더 복잡해지고 어려워지는건가여? 아니면 서비스 계층에서 로직이 좀더 길어지는거 말고는 별 차이가 없는건가여 이부분도 간단하지는 않아 보이는데 v1, v2, v3, v4, v5 를 OSIV 를 끄고도 개발할수 있어야 되나여? 3.근데 스프링 부트 jpa가 원래 이렇게 어려운건가여 끝이 없네여 ㅋ; 기본편 스프링 data jpa , quer dsl 다 들어야 되요 ㅠ; 알려주신 스펙 다 적용해서 실전 어플리케이션은 언제 만들죠 ㅠ; 4.리액트나 스벨트까지 연동해서 풀스택 프로젝트 강의도 언제인가 만들어 주실건가요? 5.훌륭한 강의 만들어 주셔서 감사합니다 좋은 주말 되세여!

  • spring-boot
  • spring
  • JPA
  • java
terecal 댓글 1 좋아요 0 조회수 300

제가 구현해보았는데 제 코드는 어떤 부분이 잘못된 건지 알려주실 수 있으신가요?

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

import sys sys.stdin = open ( "input.txt" , "rt" ) def dfs (lev, q, w, e): global a_max if (lev == n): a_max = min (a_max, max (q,w,e)- min (q,w,e)) else : dfs(lev+ 1 , q+a[lev], w, e) dfs(lev+ 1 , q, w+a[lev], e) dfs(lev+ 1 , q, w, e+a[lev]) if __name__ == "__main__" : n = int ( input ()) a = list () for _ in range (n): a.append( int ( input ())) a_max = 99999 dfs( 0 , 0 , 0 , 0 ) print (a_max) 제가 구현해봤는데 어느 부분이 잘못된건지 궁금합니다. 답은 1이나오더라구요

  • python
  • 코테 준비 같이 해요!
코딩왕 댓글 2 좋아요 0 조회수 277

두번째 질문입니다 latest 했는데도 안되네요 ㅜㅜ

미해결

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

D:\desktop\ch9\9.5\nodebird> npm i passport-kakao@latest up to date, audited 380 packages in 1s 3 low severity vulnerabilities To address all issues, run: npm audit fix Run `npm audit` for details. D:\desktop\ch9\9.5\nodebird>npm start > nodebird@0.0.1 start > nodemon app [nodemon] 2.0.6 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node app.js` node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module './Strategy' Require stack: - D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js - D:\desktop\ch9\9.5\nodebird\passport\kakaoStrategy.js - D:\desktop\ch9\9.5\nodebird\passport\index.js - D:\desktop\ch9\9.5\nodebird\app.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:925:15) at Function.Module._load (node:internal/modules/cjs/loader:769:27) at Module.require (node:internal/modules/cjs/loader:997:19) at require (node:internal/modules/cjs/helpers:92:18) at Object.<anonymous> (D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js:6:34) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) at Function.Module._load (node:internal/modules/cjs/loader:813:14) at Module.require (node:internal/modules/cjs/loader:997:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\desktop\\ch9\\9.5\\nodebird\\node_modules\\passport-kakao\\dist\\passport-kakao.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\kakaoStrategy.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\index.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\app.js' ] } [nodemon] app crashed - waiting for file changes before starting...

  • Sequelize
  • mysql
  • nodejs
  • mongodb
­박상신(대학원/공학대학원 전기전자공학전공) 댓글 2 좋아요 0 조회수 293

안녕하세요 노드버드 프로젝트하는중입니다

미해결

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

ch 9.5 다운받아서 했는데도 안되네요 ㅠㅠ D:\desktop\ch9\9.5\nodebird>npm start > nodebird@0.0.1 start > nodemon app [nodemon] 2.0.6 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node app.js` uploads 폴더가 없어 uploads 폴더를 생성합니다. node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module './Strategy' Require stack: - D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js - D:\desktop\ch9\9.5\nodebird\passport\kakaoStrategy.js - D:\desktop\ch9\9.5\nodebird\passport\index.js - D:\desktop\ch9\9.5\nodebird\app.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:925:15) at Function.Module._load (node:internal/modules/cjs/loader:769:27) at Module.require (node:internal/modules/cjs/loader:997:19) at require (node:internal/modules/cjs/helpers:92:18) at Object.<anonymous> (D:\desktop\ch9\9.5\nodebird\node_modules\passport-kakao\dist\passport-kakao.js:6:34) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) at Function.Module._load (node:internal/modules/cjs/loader:813:14) at Module.require (node:internal/modules/cjs/loader:997:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\desktop\\ch9\\9.5\\nodebird\\node_modules\\passport-kakao\\dist\\passport-kakao.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\kakaoStrategy.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\passport\\index.js', 'D:\\desktop\\ch9\\9.5\\nodebird\\app.js' ] } [nodemon] app crashed - waiting for file changes before starting...

  • mongodb
  • mysql
  • nodejs
  • Sequelize
­박상신(대학원/공학대학원 전기전자공학전공) 댓글 1 좋아요 0 조회수 189

loc가 더 연산이 빠른 이유

미해결

공공데이터로 파이썬 데이터 분석 시작하기

df[(df["시군구명"]=="강남구") & (df["상권업종대분류명"]=="음식")]["상권업종중분류명"].value_counts() 보다는 loc를 써서 df.loc[(df["시군구명"]=="강남구") & (df["상권업종대분류명"]=="음식"),"상권업종중분류명"].value_counts() 이렇게 하는게 연산이 더 빠르다고 하셨는데요.. 이유가 무엇인가요..??

  • numpy
  • python
  • pandas
freedom07 댓글 1 좋아요 1 조회수 181

왼쪽 상단에 표시되는 단축키

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

왼쪽 상단에 별도로 표시되는 단축키는 플러그인을 사용하신건가요? 아니면 인텔리제이에서 제공하는 기능인가요?

  • thymeleaf
  • JPA
  • spring
  • java
  • spring-boot
한휴르 댓글 1 좋아요 1 조회수 272

이상한게 뜸

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

글자를 쓸 때마다 마다 저런 빨간게 계속 뜸니다 어떻게 해야 하나요? 버전은 3.9 입니다

  • python
bgim17855 댓글 1 좋아요 0 조회수 351

while문 이상해서 질문드립니다!!

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ

  • 코테 준비 같이 해요!
  • python
호잇 댓글 1 좋아요 0 조회수 295

섹션5. - 3번_후위표기식 만들기 질문이요!

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요. "섹션5. - 3번_후위표기식 만들기" 질문이 있습니다. for x in data: if x.isdecimal(): res += x else: if x == '(': stack.append(x) elif x == '*' or x == '/': while stack and (stack[-1] == '*' or stack[-1] == '/'): res =+ stack.pop() stack.append(x) ... ... ... 연산자가 곱셈(*)이랑 나눗셈(/)일때, while문에서는 아래의 다른 while문들과는 다르게, '(' 연산자가 나오면 멈춰야하는 != '(' 가 있는데 왜, 위에 쓴 while문에는 없는지 모르겠습니다. 똑같이 != '(' 를 입력해줬는데 돌아가긴 하더라구요. 혹시 넣어도 되는 부분인지, 아니면 넣어주면 안되는지 궁금합니다 ㅠㅠㅠ

  • python
  • 코테 준비 같이 해요!
호잇 댓글 1 좋아요 0 조회수 250

클래스 데이터 타입...

스프링 핵심 원리 - 기본편

삭제된 글입니다

  • oop
  • spring
탈룰라 댓글 1 좋아요 0 조회수 104

인기 태그

인프런 TOP Writers

주간 인기글